Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit afb1b74

Browse files
fix(ts): dependency to not resolve using tsconfig paths (#13)
1 parent 3991a1a commit afb1b74

File tree

21 files changed

+58
-12
lines changed

21 files changed

+58
-12
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
},
3434
"dependencies": {
3535
"@esbuild-kit/core-utils": "^2.0.0",
36-
"get-tsconfig": "^4.0.0"
36+
"get-tsconfig": "^4.0.5"
3737
},
3838
"devDependencies": {
3939
"@pvtnbr/eslint-config": "^0.22.0",

pnpm-lock.yaml

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/index.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import path from 'path';
12
import fs from 'fs';
23
import Module from 'module';
34
import {
@@ -11,6 +12,7 @@ import { getTsconfig, createPathsMatcher } from 'get-tsconfig';
1112

1213
const isPathPattern = /^\.{0,2}\//;
1314
const isTsFilePatten = /\.[cm]?tsx?$/;
15+
const nodeModulesPath = `${path.sep}node_modules${path.sep}`;
1416

1517
const tsconfig = getTsconfig();
1618
const tsconfigRaw = tsconfig?.config;
@@ -112,8 +114,12 @@ Module._resolveFilename = function (request, parent, isMain, options) {
112114

113115
if (
114116
tsconfigPathsMatcher
117+
115118
// bare specifier
116119
&& !isPathPattern.test(request)
120+
121+
// Dependency paths should not be resolved using tsconfig.json
122+
&& !parent?.filename.includes(nodeModulesPath)
117123
) {
118124
const possiblePaths = tsconfigPathsMatcher(request);
119125
for (const possiblePath of possiblePaths) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require('resolve-current-directory');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require('should-not-resolve-baseUrl');
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
require('should-not-resolve-paths');

tests/fixtures/tsconfig/node_modules/resolve-current-directory/lib/file.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/resolve-current-directory/lib/index.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/resolve-current-directory/package.json

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-baseUrl/index.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/index.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-baseUrl/node_modules/resolve-target/package.json

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-baseUrl/package.json

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-paths/index.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/nested-resolve-target.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-paths/node_modules/p/package.json

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/node_modules/should-not-resolve-paths/package.json

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/fixtures/tsconfig/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
console.log('Should not run');
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default 'resolved';
1+
export default 'resolve-target';
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default 'resolved';
1+
export default 'nested-resolve-target';

tests/specs/typescript/tsconfig.ts

+28-5
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,56 @@ export default testSuite(async ({ describe }, node: NodeApis) => {
1010
expect(nodeProcess.stdout).toBe('div null hello world\nnull null goodbye world');
1111
});
1212

13-
describe('paths', ({ test }) => {
13+
describe('paths', ({ test, describe }) => {
1414
test('resolves baseUrl', async () => {
1515
const nodeProcess = await node.load('./src/base-url.ts', {
1616
cwd: './tsconfig',
1717
});
18-
expect(nodeProcess.stdout).toBe('resolved');
18+
expect(nodeProcess.stdout).toBe('resolve-target');
1919
});
2020

2121
test('resolves paths exact match', async () => {
2222
const nodeProcess = await node.load('./src/paths-exact-match.ts', {
2323
cwd: './tsconfig',
2424
});
25-
expect(nodeProcess.stdout).toBe('resolved');
25+
expect(nodeProcess.stdout).toBe('resolve-target');
2626
});
2727

2828
test('resolves paths prefix', async () => {
2929
const nodeProcess = await node.load('./src/paths-prefix-match.ts', {
3030
cwd: './tsconfig',
3131
});
32-
expect(nodeProcess.stdout).toBe('resolved');
32+
expect(nodeProcess.stdout).toBe('nested-resolve-target');
3333
});
3434

3535
test('resolves paths suffix', async () => {
3636
const nodeProcess = await node.load('./src/paths-suffix-match.ts', {
3737
cwd: './tsconfig',
3838
});
39-
expect(nodeProcess.stdout).toBe('resolved');
39+
expect(nodeProcess.stdout).toBe('nested-resolve-target');
40+
});
41+
42+
describe('dependency', ({ test }) => {
43+
test('resolve current directory', async () => {
44+
const nodeProcess = await node.load('./dependency-resolve-current-directory', {
45+
cwd: './tsconfig',
46+
});
47+
expect(nodeProcess.stdout).toBe('resolved');
48+
});
49+
50+
test('should not resolve baseUrl', async () => {
51+
const nodeProcess = await node.load('./dependency-should-not-resolve-baseUrl', {
52+
cwd: './tsconfig',
53+
});
54+
expect(nodeProcess.stdout).toBe('resolved');
55+
});
56+
57+
test('should not resolve paths', async () => {
58+
const nodeProcess = await node.load('./dependency-should-not-resolve-paths', {
59+
cwd: './tsconfig',
60+
});
61+
expect(nodeProcess.stdout).toBe('resolved');
62+
});
4063
});
4164
});
4265
});

0 commit comments

Comments
 (0)