diff --git a/lib/util/import-target.js b/lib/util/import-target.js index a407c58f..f5f90a9c 100644 --- a/lib/util/import-target.js +++ b/lib/util/import-target.js @@ -44,13 +44,15 @@ function getTSConfigAliases(context) { const paths = tsConfig?.config?.compilerOptions?.paths - if (paths == null) { + if (tsConfig?.path == null || paths == null) { return } return Object.entries(paths).map(([name, alias]) => ({ name: removeTrailWildcard(name), - alias: removeTrailWildcard(alias), + alias: removeTrailWildcard(alias).map(relative => + resolve(tsConfig.path, "..", relative) + ), })) } diff --git a/tests/fixtures/no-missing/issue-314/module/index.ts b/tests/fixtures/no-missing/issue-314/module/index.ts new file mode 100644 index 00000000..5fb59bfa --- /dev/null +++ b/tests/fixtures/no-missing/issue-314/module/index.ts @@ -0,0 +1,5 @@ +function x() { + return true; +} + +export default x; diff --git a/tests/fixtures/no-missing/issue-314/src/example.ts b/tests/fixtures/no-missing/issue-314/src/example.ts new file mode 100644 index 00000000..e69de29b diff --git a/tests/fixtures/no-missing/issue-314/tsconfig.json b/tests/fixtures/no-missing/issue-314/tsconfig.json new file mode 100644 index 00000000..e1c8876b --- /dev/null +++ b/tests/fixtures/no-missing/issue-314/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "baseUrl": "./src/", + "module": "node16", + "target": "es2022", + "moduleResolution": "node16", + "paths": { + "@module": ["./module/index.ts"] + }, + "strict": true + }, + "include": ["src", "module"] +} diff --git a/tests/lib/rules/no-missing-import.js b/tests/lib/rules/no-missing-import.js index 184930c2..f8478f9c 100644 --- a/tests/lib/rules/no-missing-import.js +++ b/tests/lib/rules/no-missing-import.js @@ -306,6 +306,14 @@ ruleTester.run("no-missing-import", rule, { filename: fixture("ts-paths/test.ts"), code: "import before from '@wild/where.js';", }, + { + // name: "tsconfig - compilerOptions.paths - direct reference", + filename: fixture("issue-314/src/example.ts"), + code: "import('@module');", + languageOptions: { + ecmaVersion: "latest", + }, + }, { // name: 'Ensure type only packages can be imported',