summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> 2021-05-10 09:00:05 -0700
committerGravatar GitHub <noreply@github.com> 2021-05-10 11:00:05 -0500
commite0a4f5fbc05e8a0caeff064f4795ce94f85ec4e2 (patch)
tree699326c8f31cfc222be0560de5c08a47e0b8b49f
parent42ec961eecc621e68e659f87894b9991b7edbf22 (diff)
downloadastro-e0a4f5fbc05e8a0caeff064f4795ce94f85ec4e2.tar.gz
astro-e0a4f5fbc05e8a0caeff064f4795ce94f85ec4e2.tar.zst
astro-e0a4f5fbc05e8a0caeff064f4795ce94f85ec4e2.zip
Allow default import component to be renamed based on import statement default specifier (#193)
* Allow renaming for default import components * Changeset
-rw-r--r--.changeset/many-turtles-move.md5
-rw-r--r--packages/astro/src/build/page.ts21
-rw-r--r--packages/astro/test/fixtures/astro-dynamic/src/pages/default-rename.astro12
3 files changed, 30 insertions, 8 deletions
diff --git a/.changeset/many-turtles-move.md b/.changeset/many-turtles-move.md
new file mode 100644
index 000000000..7d699882c
--- /dev/null
+++ b/.changeset/many-turtles-move.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Allow renaming for default import components
diff --git a/packages/astro/src/build/page.ts b/packages/astro/src/build/page.ts
index ae472e071..1f0093271 100644
--- a/packages/astro/src/build/page.ts
+++ b/packages/astro/src/build/page.ts
@@ -222,14 +222,19 @@ async function gatherRuntimes({ astroConfig, buildState, filepath, logging, reso
for (const componentImport of componentImports) {
const importUrl = componentImport.source.value;
const componentType = path.posix.extname(importUrl);
- const componentName = path.posix.basename(importUrl, componentType);
- const plugin = extensions[componentType] || defaultExtensions[componentType];
- plugins.add(plugin);
- components[componentName] = {
- plugin,
- type: componentType,
- specifier: importUrl,
- };
+ for (const specifier of componentImport.specifiers) {
+ if (specifier.type === 'ImportDefaultSpecifier') {
+ const componentName = specifier.local.name;
+ const plugin = extensions[componentType] || defaultExtensions[componentType];
+ plugins.add(plugin);
+ components[componentName] = {
+ plugin,
+ type: componentType,
+ specifier: importUrl,
+ };
+ break;
+ }
+ }
}
const dynamic = await acquireDynamicComponentImports(plugins, resolvePackageUrl);
diff --git a/packages/astro/test/fixtures/astro-dynamic/src/pages/default-rename.astro b/packages/astro/test/fixtures/astro-dynamic/src/pages/default-rename.astro
new file mode 100644
index 000000000..8d418fc15
--- /dev/null
+++ b/packages/astro/test/fixtures/astro-dynamic/src/pages/default-rename.astro
@@ -0,0 +1,12 @@
+---
+import CounterRenamed from '../components/Counter.jsx';
+import SvelteCounterRenamed from '../components/SvelteCounter.svelte';
+---
+<html>
+<head><title>Dynamic pages</title></head>
+<body>
+ <CounterRenamed:load />
+
+ <SvelteCounterRenamed:load />
+</body>
+</html>