feat(nuxt): use correct name for auto-imported components

This commit is contained in:
Julien Huang 2024-08-28 21:13:08 +02:00
parent 87dca6a01d
commit d37cca6610
2 changed files with 8 additions and 2 deletions

View File

@ -15,6 +15,7 @@ interface LoaderOptions {
sourcemap?: boolean
transform?: ComponentsOptions['transform']
experimentalComponentIslands?: boolean
isDev: boolean
}
export const loaderPlugin = createUnplugin((options: LoaderOptions) => {
@ -74,10 +75,13 @@ export const loaderPlugin = createUnplugin((options: LoaderOptions) => {
if (lazy) {
imports.add(genImport('vue', [{ name: 'defineAsyncComponent', as: '__defineAsyncComponent' }]))
identifier += '_lazy'
imports.add(`const ${identifier} = __defineAsyncComponent(${genDynamicImport(component.filePath, { interopDefault: false })}.then(c => c.${component.export ?? 'default'} || c)${isClientOnly ? '.then(c => createClientOnly(c))' : ''})`)
imports.add(`const ${identifier} = __defineAsyncComponent(${genDynamicImport(component.filePath, { interopDefault: false })}.then(c => ${options.isDev ? `({...(c.${component.export ?? 'default'} || c), name: ${component.pascalName}})` : `c.${component.export ?? 'default'} || c`})${isClientOnly ? '.then(c => createClientOnly(c))' : ''})`)
} else {
imports.add(genImport(component.filePath, [{ name: component._raw ? 'default' : component.export, as: identifier }]))
if (options.isDev) {
imports.add(`const ${identifier}_dev = Object.assign(${identifier}, { name: '${component.pascalName}' })`)
identifier += '_dev'
}
if (isClientOnly) {
imports.add(`const ${identifier}_wrapped = createClientOnly(${identifier})`)
identifier += '_wrapped'

View File

@ -230,6 +230,7 @@ export default defineNuxtModule<ComponentsOptions>({
mode,
transform: typeof nuxt.options.components === 'object' && !Array.isArray(nuxt.options.components) ? nuxt.options.components.transform : undefined,
experimentalComponentIslands: !!nuxt.options.experimental.componentIslands,
isDev: nuxt.options.dev,
}))
if (nuxt.options.experimental.componentIslands) {
@ -299,6 +300,7 @@ export default defineNuxtModule<ComponentsOptions>({
mode,
transform: typeof nuxt.options.components === 'object' && !Array.isArray(nuxt.options.components) ? nuxt.options.components.transform : undefined,
experimentalComponentIslands: !!nuxt.options.experimental.componentIslands,
isDev: nuxt.options.dev,
}))
if (nuxt.options.experimental.componentIslands) {