2021-09-21 14:55:07 +00:00
|
|
|
|
|
|
|
import type { Nuxt, NuxtApp } from '@nuxt/kit'
|
|
|
|
|
2021-09-23 17:57:37 +00:00
|
|
|
import { importName, importSources } from '../core/template.utils'
|
2021-09-21 14:55:07 +00:00
|
|
|
|
|
|
|
type TemplateContext = {
|
|
|
|
nuxt: Nuxt;
|
|
|
|
app: NuxtApp;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const appTemplate = {
|
|
|
|
filename: 'app.mjs',
|
|
|
|
getContents (ctx: TemplateContext) {
|
|
|
|
return `export { default } from '${ctx.app.main}'`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const cssTemplate = {
|
|
|
|
filename: 'css.mjs',
|
|
|
|
getContents (ctx: TemplateContext) {
|
|
|
|
return ctx.nuxt.options.css.map(i => `import '${i.src || i}';`).join('\n')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const clientPluginTemplate = {
|
|
|
|
filename: 'plugins/client.mjs',
|
|
|
|
getContents (ctx: TemplateContext) {
|
2021-09-23 17:57:37 +00:00
|
|
|
const { app } = ctx
|
2021-09-21 14:55:07 +00:00
|
|
|
return [
|
2021-09-23 17:57:37 +00:00
|
|
|
importSources(app.plugins.filter(p => !p.mode || p.mode !== 'server').map(p => p.src)),
|
2021-09-21 14:55:07 +00:00
|
|
|
'export default [',
|
2021-09-23 17:57:37 +00:00
|
|
|
app.plugins.filter(p => !p.mode || p.mode !== 'server').map(p => importName(p.src)).join(',\n '),
|
2021-09-21 14:55:07 +00:00
|
|
|
']'
|
|
|
|
].join('\n')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const serverPluginTemplate = {
|
|
|
|
filename: 'plugins/server.mjs',
|
|
|
|
getContents (ctx: TemplateContext) {
|
2021-09-23 17:57:37 +00:00
|
|
|
const { app } = ctx
|
2021-09-21 14:55:07 +00:00
|
|
|
return [
|
|
|
|
"import preload from '#app/plugins/preload.server'",
|
2021-09-23 17:57:37 +00:00
|
|
|
importSources(app.plugins.filter(p => !p.mode || p.mode !== 'client').map(p => p.src)),
|
2021-09-21 14:55:07 +00:00
|
|
|
'export default [',
|
|
|
|
' preload,',
|
2021-09-23 17:57:37 +00:00
|
|
|
app.plugins.filter(p => !p.mode || p.mode !== 'client').map(p => importName(p.src)).join(',\n '),
|
2021-09-21 14:55:07 +00:00
|
|
|
']'
|
|
|
|
].join('\n')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const appViewTemplate = {
|
|
|
|
filename: 'views/app.template.html',
|
|
|
|
getContents () {
|
|
|
|
return `<!DOCTYPE html>
|
|
|
|
<html {{ HTML_ATTRS }}>
|
|
|
|
|
|
|
|
<head {{ HEAD_ATTRS }}>
|
|
|
|
{{ HEAD }}
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body {{ BODY_ATTRS }}>
|
|
|
|
{{ APP }}
|
|
|
|
</body>
|
|
|
|
|
|
|
|
</html>
|
|
|
|
`
|
|
|
|
}
|
|
|
|
}
|