diff options
author | 2021-05-10 09:00:05 -0700 | |
---|---|---|
committer | 2021-05-10 11:00:05 -0500 | |
commit | e0a4f5fbc05e8a0caeff064f4795ce94f85ec4e2 (patch) | |
tree | 699326c8f31cfc222be0560de5c08a47e0b8b49f | |
parent | 42ec961eecc621e68e659f87894b9991b7edbf22 (diff) | |
download | astro-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.md | 5 | ||||
-rw-r--r-- | packages/astro/src/build/page.ts | 21 | ||||
-rw-r--r-- | packages/astro/test/fixtures/astro-dynamic/src/pages/default-rename.astro | 12 |
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> |