Skip to content

Commit 6cd7954

Browse files
authored
fix(no-missing-import): Resolve tsconfig paths relative to the tsconfig (#343)
* test: Add failing test for 314 * fix: Resolve tsconfig paths relative to the tsconfig
1 parent 87fb484 commit 6cd7954

File tree

5 files changed

+30
-2
lines changed

5 files changed

+30
-2
lines changed

lib/util/import-target.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@ function getTSConfigAliases(context) {
4444

4545
const paths = tsConfig?.config?.compilerOptions?.paths
4646

47-
if (paths == null) {
47+
if (tsConfig?.path == null || paths == null) {
4848
return
4949
}
5050

5151
return Object.entries(paths).map(([name, alias]) => ({
5252
name: removeTrailWildcard(name),
53-
alias: removeTrailWildcard(alias),
53+
alias: removeTrailWildcard(alias).map(relative =>
54+
resolve(tsConfig.path, "..", relative)
55+
),
5456
}))
5557
}
5658

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function x() {
2+
return true;
3+
}
4+
5+
export default x;

tests/fixtures/no-missing/issue-314/src/example.ts

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"compilerOptions": {
3+
"baseUrl": "./src/",
4+
"module": "node16",
5+
"target": "es2022",
6+
"moduleResolution": "node16",
7+
"paths": {
8+
"@module": ["./module/index.ts"]
9+
},
10+
"strict": true
11+
},
12+
"include": ["src", "module"]
13+
}

tests/lib/rules/no-missing-import.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,14 @@ ruleTester.run("no-missing-import", rule, {
306306
filename: fixture("ts-paths/test.ts"),
307307
code: "import before from '@wild/where.js';",
308308
},
309+
{
310+
// name: "tsconfig - compilerOptions.paths - direct reference",
311+
filename: fixture("issue-314/src/example.ts"),
312+
code: "import('@module');",
313+
languageOptions: {
314+
ecmaVersion: "latest",
315+
},
316+
},
309317

310318
{
311319
// name: 'Ensure type only packages can be imported',

0 commit comments

Comments
 (0)