From: daiwei Date: Wed, 18 Jun 2025 06:38:59 +0000 (+0800) Subject: test: add test X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5fab826ea20b867d950adce7d7a55c027ea6f7e4;p=thirdparty%2Fvuejs%2Fcore.git test: add test --- diff --git a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts index 68fc5cc315..6b4770ecb7 100644 --- a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts @@ -1155,6 +1155,45 @@ describe('resolveType', () => { expect(deps && [...deps]).toStrictEqual(['/user.ts']) }) + // #13484 + test('ts module resolve w/ project reference & extends & ${configDir}', () => { + const files = { + '/tsconfig.json': JSON.stringify({ + files: [], + references: [{ path: './tsconfig.app.json' }], + }), + '/tsconfig.app.json': JSON.stringify({ + extends: ['./tsconfigs/base.json'], + }), + '/tsconfigs/base.json': JSON.stringify({ + compilerOptions: { + paths: { + '@/*': ['${configDir}/src/*'], + }, + }, + include: ['${configDir}/src/**/*.ts', '${configDir}/src/**/*.vue'], + }), + '/src/types.ts': + 'export type BaseProps = { foo?: string, bar?: string }', + } + + const { props, deps } = resolve( + ` + import { BaseProps } from '@/types.ts'; + defineProps() + `, + files, + {}, + '/src/components/Foo.vue', + ) + + expect(props).toStrictEqual({ + foo: ['String'], + bar: ['String'], + }) + expect(deps && [...deps]).toStrictEqual(['/src/types.ts']) + }) + test('ts module resolve w/ project reference folder', () => { const files = { '/tsconfig.json': JSON.stringify({ diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts index 60b23ca8a6..9e518418b4 100644 --- a/packages/compiler-sfc/src/script/resolveType.ts +++ b/packages/compiler-sfc/src/script/resolveType.ts @@ -1033,7 +1033,7 @@ function resolveWithTS( function getPattern(base: string, p: string): string { return p.startsWith('${configDir}') && major >= 5 && minor >= 5 ? // ts 5.5+ supports ${configDir} in paths - p.replace('${configDir}', dirname(configPath!)) + normalizePath(p.replace('${configDir}', dirname(configPath!))) : joinPaths(base, p) } // resolve which config matches the current file