mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-14 12:48:16 +00:00
fix: migrate to vfs
This commit is contained in:
parent
897b067e19
commit
e7d10402de
@ -230,8 +230,9 @@ export default defineNuxtModule<ComponentsOptions>({
|
|||||||
experimentalComponentIslands: !!nuxt.options.experimental.componentIslands,
|
experimentalComponentIslands: !!nuxt.options.experimental.componentIslands,
|
||||||
}
|
}
|
||||||
|
|
||||||
addBuildPlugin(LoaderPlugin({ ...sharedLoaderOptions, sourcemap: !!nuxt.options.sourcemap.client, mode: 'client' }), { server: false })
|
const clientDelayedComponentRuntime = await findPath(join(distDir, 'components/runtime/client-delayed-component')) ?? join(distDir, 'components/runtime/client-delayed-component')
|
||||||
addBuildPlugin(LoaderPlugin({ ...sharedLoaderOptions, sourcemap: !!nuxt.options.sourcemap.server, mode: 'server' }), { client: false })
|
addBuildPlugin(LoaderPlugin({ ...sharedLoaderOptions, sourcemap: !!nuxt.options.sourcemap.client, mode: 'client', clientDelayedComponentRuntime }), { server: false })
|
||||||
|
addBuildPlugin(LoaderPlugin({ ...sharedLoaderOptions, sourcemap: !!nuxt.options.sourcemap.server, mode: 'server', clientDelayedComponentRuntime }), { client: false })
|
||||||
|
|
||||||
if (nuxt.options.experimental.componentIslands) {
|
if (nuxt.options.experimental.componentIslands) {
|
||||||
const selectiveClient = typeof nuxt.options.experimental.componentIslands === 'object' && nuxt.options.experimental.componentIslands.selectiveClient
|
const selectiveClient = typeof nuxt.options.experimental.componentIslands === 'object' && nuxt.options.experimental.componentIslands.selectiveClient
|
||||||
|
@ -12,6 +12,7 @@ interface LoaderOptions {
|
|||||||
getComponents (): Component[]
|
getComponents (): Component[]
|
||||||
mode: 'server' | 'client'
|
mode: 'server' | 'client'
|
||||||
serverComponentRuntime: string
|
serverComponentRuntime: string
|
||||||
|
clientDelayedComponentRuntime: string
|
||||||
sourcemap?: boolean
|
sourcemap?: boolean
|
||||||
transform?: ComponentsOptions['transform']
|
transform?: ComponentsOptions['transform']
|
||||||
experimentalComponentIslands?: boolean
|
experimentalComponentIslands?: boolean
|
||||||
@ -21,7 +22,6 @@ const REPLACE_COMPONENT_TO_DIRECT_IMPORT_RE = /(?<=[ (])_?resolveComponent\(\s*[
|
|||||||
export const LoaderPlugin = (options: LoaderOptions) => createUnplugin(() => {
|
export const LoaderPlugin = (options: LoaderOptions) => createUnplugin(() => {
|
||||||
const exclude = options.transform?.exclude || []
|
const exclude = options.transform?.exclude || []
|
||||||
const include = options.transform?.include || []
|
const include = options.transform?.include || []
|
||||||
const clientDelayedComponentRuntime = resolve(distDir, 'components/runtime/client-delayed-component')
|
|
||||||
const nuxt = tryUseNuxt()
|
const nuxt = tryUseNuxt()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -43,7 +43,6 @@ export const LoaderPlugin = (options: LoaderOptions) => createUnplugin(() => {
|
|||||||
const imports = new Set<string>()
|
const imports = new Set<string>()
|
||||||
const map = new Map<Component, string>()
|
const map = new Map<Component, string>()
|
||||||
const s = new MagicString(code)
|
const s = new MagicString(code)
|
||||||
const nuxt = tryUseNuxt()
|
|
||||||
// replace `_resolveComponent("...")` to direct import
|
// replace `_resolveComponent("...")` to direct import
|
||||||
s.replace(REPLACE_COMPONENT_TO_DIRECT_IMPORT_RE, (full: string, lazy: string, modifier: string, name: string) => {
|
s.replace(REPLACE_COMPONENT_TO_DIRECT_IMPORT_RE, (full: string, lazy: string, modifier: string, name: string) => {
|
||||||
const normalComponent = findComponent(components, name, options.mode)
|
const normalComponent = findComponent(components, name, options.mode)
|
||||||
@ -85,31 +84,31 @@ export const LoaderPlugin = (options: LoaderOptions) => createUnplugin(() => {
|
|||||||
switch (modifier) {
|
switch (modifier) {
|
||||||
case 'Visible':
|
case 'Visible':
|
||||||
case 'visible-':
|
case 'visible-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyIOComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyIOComponent' }]))
|
||||||
identifier += '_delayedIO'
|
identifier += '_delayedIO'
|
||||||
imports.add(`const ${identifier} = createLazyIOComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyIOComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
case 'Event':
|
case 'Event':
|
||||||
case 'event-':
|
case 'event-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyEventComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyEventComponent' }]))
|
||||||
identifier += '_delayedEvent'
|
identifier += '_delayedEvent'
|
||||||
imports.add(`const ${identifier} = createLazyEventComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyEventComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
case 'Idle':
|
case 'Idle':
|
||||||
case 'idle-':
|
case 'idle-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyNetworkComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyNetworkComponent' }]))
|
||||||
identifier += '_delayedNetwork'
|
identifier += '_delayedNetwork'
|
||||||
imports.add(`const ${identifier} = createLazyNetworkComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyNetworkComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
case 'Media':
|
case 'Media':
|
||||||
case 'media-':
|
case 'media-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyMediaComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyMediaComponent' }]))
|
||||||
identifier += '_delayedMedia'
|
identifier += '_delayedMedia'
|
||||||
imports.add(`const ${identifier} = createLazyMediaComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyMediaComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
case 'If':
|
case 'If':
|
||||||
case 'if-':
|
case 'if-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyIfComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyIfComponent' }]))
|
||||||
identifier += '_delayedIf'
|
identifier += '_delayedIf'
|
||||||
imports.add(`const ${identifier} = createLazyIfComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyIfComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
@ -121,13 +120,13 @@ export const LoaderPlugin = (options: LoaderOptions) => createUnplugin(() => {
|
|||||||
break
|
break
|
||||||
case 'Time':
|
case 'Time':
|
||||||
case 'time-':
|
case 'time-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyTimeComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyTimeComponent' }]))
|
||||||
identifier += '_delayedTime'
|
identifier += '_delayedTime'
|
||||||
imports.add(`const ${identifier} = createLazyTimeComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyTimeComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
case 'Promise':
|
case 'Promise':
|
||||||
case 'promise-':
|
case 'promise-':
|
||||||
imports.add(genImport(clientDelayedComponentRuntime, [{ name: 'createLazyPromiseComponent' }]))
|
imports.add(genImport(options.clientDelayedComponentRuntime, [{ name: 'createLazyPromiseComponent' }]))
|
||||||
identifier += '_delayedPromise'
|
identifier += '_delayedPromise'
|
||||||
imports.add(`const ${identifier} = createLazyPromiseComponent(${dynamicImport})`)
|
imports.add(`const ${identifier} = createLazyPromiseComponent(${dynamicImport})`)
|
||||||
break
|
break
|
||||||
|
Loading…
Reference in New Issue
Block a user