summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Happydev <81974850+MoustaphaDev@users.noreply.github.com> 2023-03-22 06:10:10 +0000
committerGravatar GitHub <noreply@github.com> 2023-03-22 14:10:10 +0800
commit38e6ec21e266ad8765d8ca2293034123b34e839a (patch)
treeb012068a1098851592221fb4b385d6dcb5fc0695
parentb37b865400e77e92878d7e150244acce47e933c6 (diff)
downloadastro-38e6ec21e266ad8765d8ca2293034123b34e839a.tar.gz
astro-38e6ec21e266ad8765d8ca2293034123b34e839a.tar.zst
astro-38e6ec21e266ad8765d8ca2293034123b34e839a.zip
Fix tsconfig alias regression (#6617)
-rw-r--r--.changeset/curly-wasps-matter.md5
-rw-r--r--packages/astro/src/vite-plugin-config-alias/index.ts12
-rw-r--r--packages/astro/test/alias-tsconfig.test.js8
-rw-r--r--packages/astro/test/fixtures/alias-tsconfig/src/pages/index.astro32
-rw-r--r--packages/astro/test/fixtures/alias-tsconfig/src/ts-file.ts3
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!";
+}