From c46e23f6504cc6a7e0b5ac5c71696b6077a895b4 Mon Sep 17 00:00:00 2001 From: liuxiaofei Date: Tue, 2 Apr 2024 14:24:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix(compiler-sfc):=20#10635=20resolveExt?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A7=A3=E6=9E=90[filename].tsx=E3=80=81[fil?= =?UTF-8?q?ename]/index.tsx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/compiler-sfc/src/script/resolveType.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts index 968c168ddb9..63d98cbb703 100644 --- a/packages/compiler-sfc/src/script/resolveType.ts +++ b/packages/compiler-sfc/src/script/resolveType.ts @@ -957,8 +957,10 @@ function resolveExt(filename: string, fs: FS) { tryResolve(filename) || tryResolve(filename + `.ts`) || tryResolve(filename + `.d.ts`) || + tryResolve(filename + `.tsx`) || tryResolve(joinPaths(filename, `index.ts`)) || - tryResolve(joinPaths(filename, `index.d.ts`)) + tryResolve(joinPaths(filename, `index.d.ts`)) || + tryResolve(joinPaths(filename, `index.tsx`)) ) } From eef8149c028f427dec1ba473c7bc0270764da7c7 Mon Sep 17 00:00:00 2001 From: liuxiaofei Date: Mon, 8 Apr 2024 15:04:20 +0800 Subject: [PATCH 2/2] fix(compiler-sfc): #10637 look up for .tsx before .d.ts and supply relative test cases --- .../compileScript/resolveType.spec.ts | 21 +++++++++++++++++++ .../compiler-sfc/src/script/resolveType.ts | 6 +++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts index 0c5c95cd17f..f3be58a301c 100644 --- a/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts +++ b/packages/compiler-sfc/__tests__/compileScript/resolveType.spec.ts @@ -561,6 +561,27 @@ describe('resolveType', () => { expect(deps && [...deps]).toStrictEqual(Object.keys(files)) }) + // #10635 + test('relative tsx', () => { + const files = { + '/foo.tsx': 'export type P = { foo: number }', + '/bar/index.tsx': 'export type PP = { bar: string }', + } + const { props, deps } = resolve( + ` + import { P } from './foo' + import { PP } from './bar' + defineProps

() + `, + files, + ) + expect(props).toStrictEqual({ + foo: ['Number'], + bar: ['String'], + }) + expect(deps && [...deps]).toStrictEqual(Object.keys(files)) + }) + test.runIf(process.platform === 'win32')('relative ts on Windows', () => { const files = { 'C:\\Test\\FolderA\\foo.ts': 'export type P = { foo: number }', diff --git a/packages/compiler-sfc/src/script/resolveType.ts b/packages/compiler-sfc/src/script/resolveType.ts index 63d98cbb703..f6e291791a8 100644 --- a/packages/compiler-sfc/src/script/resolveType.ts +++ b/packages/compiler-sfc/src/script/resolveType.ts @@ -956,11 +956,11 @@ function resolveExt(filename: string, fs: FS) { return ( tryResolve(filename) || tryResolve(filename + `.ts`) || - tryResolve(filename + `.d.ts`) || tryResolve(filename + `.tsx`) || + tryResolve(filename + `.d.ts`) || tryResolve(joinPaths(filename, `index.ts`)) || - tryResolve(joinPaths(filename, `index.d.ts`)) || - tryResolve(joinPaths(filename, `index.tsx`)) + tryResolve(joinPaths(filename, `index.tsx`)) || + tryResolve(joinPaths(filename, `index.d.ts`)) ) }