diff options
author | 2023-03-22 06:10:10 +0000 | |
---|---|---|
committer | 2023-03-22 14:10:10 +0800 | |
commit | 38e6ec21e266ad8765d8ca2293034123b34e839a (patch) | |
tree | b012068a1098851592221fb4b385d6dcb5fc0695 | |
parent | b37b865400e77e92878d7e150244acce47e933c6 (diff) | |
download | astro-38e6ec21e266ad8765d8ca2293034123b34e839a.tar.gz astro-38e6ec21e266ad8765d8ca2293034123b34e839a.tar.zst astro-38e6ec21e266ad8765d8ca2293034123b34e839a.zip |
Fix tsconfig alias regression (#6617)
5 files changed, 40 insertions, 20 deletions
diff --git a/.changeset/curly-wasps-matter.md b/.changeset/curly-wasps-matter.md new file mode 100644 index 000000000..df9517de9 --- /dev/null +++ b/.changeset/curly-wasps-matter.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix tsconfig alias regression diff --git a/packages/astro/src/vite-plugin-config-alias/index.ts b/packages/astro/src/vite-plugin-config-alias/index.ts index cec03f33e..992f2136e 100644 --- a/packages/astro/src/vite-plugin-config-alias/index.ts +++ b/packages/astro/src/vite-plugin-config-alias/index.ts @@ -72,16 +72,18 @@ export default function configAliasVitePlugin({ }; } }, - resolveId(id) { - if (id.startsWith('.') || id.startsWith('/')) return; + async resolveId(id, importer, options) { + if (id.startsWith('.') || path.isAbsolute(id)) return; // Handle baseUrl mapping for non-relative and non-root imports. // Since TypeScript only applies `baseUrl` autocompletions for files that exist // in the filesystem only, we can use this heuristic to skip resolve if needed. const resolved = path.posix.join(resolvedBaseUrl, id); - if (fs.existsSync(resolved)) { - return resolved; - } + + return await this.resolve(resolved, importer, { + skipSelf: true, + ...options, + }); }, }; } diff --git a/packages/astro/test/alias-tsconfig.test.js b/packages/astro/test/alias-tsconfig.test.js index 3157f7353..0a683e086 100644 --- a/packages/astro/test/alias-tsconfig.test.js +++ b/packages/astro/test/alias-tsconfig.test.js @@ -44,10 +44,16 @@ describe('Aliases with tsconfig.json', () => { it('works in css @import', async () => { const html = await fixture.fetch('/').then((res) => res.text()); - console.log(html); // imported css should be bundled expect(html).to.include('#style-red'); expect(html).to.include('#style-blue'); }); + + it('can load load typescript files without .ts or .d.ts extensions', async () => { + const html = await fixture.fetch('/').then((res) => res.text()); + const $ = cheerio.load(html); + + expect($('#mistery').text()).to.equal("I'm a TypeScript file!"); + }); }); }); diff --git a/packages/astro/test/fixtures/alias-tsconfig/src/pages/index.astro b/packages/astro/test/fixtures/alias-tsconfig/src/pages/index.astro index 20727cd6e..7b43a5671 100644 --- a/packages/astro/test/fixtures/alias-tsconfig/src/pages/index.astro +++ b/packages/astro/test/fixtures/alias-tsconfig/src/pages/index.astro @@ -1,20 +1,24 @@ --- -import Client from '@components/Client.svelte' +import Client from '@components/Client.svelte'; import Foo from 'src/components/Foo.astro'; import StyleComp from 'src/components/Style.astro'; -import '@styles/main.css' +import '@styles/main.css'; +import { whoImI } from 'src/ts-file'; +const mistery = whoImI(); --- + <html lang="en"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width" /> - <title>Aliases using tsconfig</title> - </head> - <body> - <main> - <Client client:load /> - <Foo /> - <StyleComp /> - </main> - </body> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width" /> + <title>Aliases using tsconfig</title> + </head> + <body> + <main> + <Client client:load /> + <Foo /> + <StyleComp /> + <div id="mistery">{mistery}</div> + </main> + </body> </html> diff --git a/packages/astro/test/fixtures/alias-tsconfig/src/ts-file.ts b/packages/astro/test/fixtures/alias-tsconfig/src/ts-file.ts new file mode 100644 index 000000000..834f20e9a --- /dev/null +++ b/packages/astro/test/fixtures/alias-tsconfig/src/ts-file.ts @@ -0,0 +1,3 @@ +export function whoImI() { + return "I'm a TypeScript file!"; +} |