diff --git a/src/configuration/tsconfig.service.ts b/src/configuration/tsconfig.service.ts index 463e35b..d951e09 100644 --- a/src/configuration/tsconfig.service.ts +++ b/src/configuration/tsconfig.service.ts @@ -131,7 +131,7 @@ async function findTsConfigFiles(workfolder: vscode.WorkspaceFolder) { async function createMappingsFromWorkspaceConfig( tsconfig: { - compilerOptions: { baseUrl: string }; + compilerOptions: { baseUrl: string, paths?: Record }; }, workfolder: vscode.WorkspaceFolder, showHiddenFiles: boolean, @@ -139,6 +139,20 @@ async function createMappingsFromWorkspaceConfig( ): Promise { const mappings: Mapping[] = []; const baseUrl = tsconfig?.compilerOptions?.baseUrl; + const paths = tsconfig?.compilerOptions?.paths; + + if (paths && baseUrl && workfolder) { + for (const alias in paths) { + const destinations = paths[alias]; + + destinations.forEach((dest) => { + mappings.push({ + key: alias.replace(/\*$/, ''), + value: '${workspaceFolder}/' + join(baseUrl, dest.replace(/\*$/, '')), + }); + }); + } + } if (baseUrl && workfolder) { const foldersInBaseUrl = await getFoldersInBaseUrl( diff --git a/src/test/demo-workspace/demo.code-workspace b/src/test/demo-workspace/demo.code-workspace index 7138f67..3f2500a 100644 --- a/src/test/demo-workspace/demo.code-workspace +++ b/src/test/demo-workspace/demo.code-workspace @@ -20,6 +20,9 @@ }, { "path": "project-nixos-config" + }, + { + "path": "project-with-paths" } ], "settings": { diff --git a/src/test/demo-workspace/project-with-paths/src/bar/bar.js b/src/test/demo-workspace/project-with-paths/src/bar/bar.js new file mode 100644 index 0000000..e69de29 diff --git a/src/test/demo-workspace/project-with-paths/src/foo/foo.js b/src/test/demo-workspace/project-with-paths/src/foo/foo.js new file mode 100644 index 0000000..e69de29 diff --git a/src/test/demo-workspace/project-with-paths/src/index.js b/src/test/demo-workspace/project-with-paths/src/index.js new file mode 100644 index 0000000..fb751f8 --- /dev/null +++ b/src/test/demo-workspace/project-with-paths/src/index.js @@ -0,0 +1 @@ +import { } from '@/foo/foo'; \ No newline at end of file diff --git a/src/test/demo-workspace/project-with-paths/tsconfig.json b/src/test/demo-workspace/project-with-paths/tsconfig.json new file mode 100644 index 0000000..620e887 --- /dev/null +++ b/src/test/demo-workspace/project-with-paths/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + + "paths": { + "@/*": ["./src/*"] + } + } +}