refactor(nuxt3): use the @nuxt/kit template utilites (#1908)

This commit is contained in:
kazuya kawaguchi 2021-11-16 04:20:51 +09:00 committed by GitHub
parent a7eacfed88
commit c53b6a5f2e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 29 deletions

View File

@ -1,19 +0,0 @@
import { basename, extname } from 'pathe'
import hash from 'hash-sum'
import { camelCase } from 'scule'
export const serialize = data => JSON.stringify(data, null, 2).replace(/"{(.+)}"/g, '$1')
export const importName = (src: string) => `${camelCase(basename(src, extname(src))).replace(/[^a-zA-Z?\d\s:]/g, '')}_${hash(src)}`
export const importSources = (sources: string | string[], { lazy = false } = {}) => {
if (!Array.isArray(sources)) {
sources = [sources]
}
return sources.map((src) => {
if (lazy) {
return `const ${importName(src)} = () => import('${src}' /* webpackChunkName: '${src}' */)`
}
return `import ${importName(src)} from '${src}'`
}).join('\n')
}

View File

@ -1,8 +1,6 @@
import { templateUtils } from '@nuxt/kit'
import type { Nuxt, NuxtApp } from '@nuxt/kit' import type { Nuxt, NuxtApp } from '@nuxt/kit'
import { importName, importSources } from './template.utils'
type TemplateContext = { type TemplateContext = {
nuxt: Nuxt; nuxt: Nuxt;
app: NuxtApp; app: NuxtApp;
@ -35,9 +33,9 @@ export const clientPluginTemplate = {
getContents (ctx: TemplateContext) { getContents (ctx: TemplateContext) {
const clientPlugins = ctx.app.plugins.filter(p => !p.mode || p.mode !== 'server') const clientPlugins = ctx.app.plugins.filter(p => !p.mode || p.mode !== 'server')
return [ return [
importSources(clientPlugins.map(p => p.src)), templateUtils.importSources(clientPlugins.map(p => p.src)),
'export default [', 'export default [',
clientPlugins.map(p => importName(p.src)).join(',\n '), clientPlugins.map(p => templateUtils.importName(p.src)).join(',\n '),
']' ']'
].join('\n') ].join('\n')
} }
@ -49,10 +47,10 @@ export const serverPluginTemplate = {
const serverPlugins = ctx.app.plugins.filter(p => !p.mode || p.mode !== 'client') const serverPlugins = ctx.app.plugins.filter(p => !p.mode || p.mode !== 'client')
return [ return [
"import preload from '#app/plugins/preload.server'", "import preload from '#app/plugins/preload.server'",
importSources(serverPlugins.map(p => p.src)), templateUtils.importSources(serverPlugins.map(p => p.src)),
'export default [', 'export default [',
' preload,', ' preload,',
serverPlugins.map(p => importName(p.src)).join(',\n '), serverPlugins.map(p => templateUtils.importName(p.src)).join(',\n '),
']' ']'
].join('\n') ].join('\n')
} }

View File

@ -1,5 +1,5 @@
import { existsSync } from 'fs' import { existsSync } from 'fs'
import { defineNuxtModule, addTemplate, addPlugin } from '@nuxt/kit' import { defineNuxtModule, addTemplate, addPlugin, templateUtils } from '@nuxt/kit'
import { resolve } from 'pathe' import { resolve } from 'pathe'
import { distDir } from '../dirs' import { distDir } from '../dirs'
import { resolveLayouts, resolvePagesRoutes, addComponentToRoutes } from './utils' import { resolveLayouts, resolvePagesRoutes, addComponentToRoutes } from './utils'
@ -45,7 +45,7 @@ export default defineNuxtModule({
const pages = await resolvePagesRoutes(nuxt) const pages = await resolvePagesRoutes(nuxt)
await nuxt.callHook('pages:extend', pages) await nuxt.callHook('pages:extend', pages)
const serializedRoutes = addComponentToRoutes(pages) const serializedRoutes = addComponentToRoutes(pages)
return `export default ${JSON.stringify(serializedRoutes, null, 2).replace(/"{(.+)}"/g, '$1')}` return `export default ${templateUtils.serialize(serializedRoutes)}`
} }
}) })
@ -59,7 +59,7 @@ export default defineNuxtModule({
})) }))
return [ return [
'import { defineAsyncComponent } from \'vue\'', 'import { defineAsyncComponent } from \'vue\'',
`export default ${JSON.stringify(layoutsObject, null, 2).replace(/"{(.+)}"/g, '$1')}` `export default ${templateUtils.serialize(layoutsObject)}`
].join('\n') ].join('\n')
} }
}) })