Nuxt/packages/vite/src/manifest.ts

34 lines
1.1 KiB
TypeScript
Raw Normal View History

2021-10-12 14:05:20 +00:00
import fse from 'fs-extra'
import { resolve } from 'pathe'
2022-01-18 16:59:14 +00:00
import { joinURL } from 'ufo'
2021-10-12 14:05:20 +00:00
import type { ViteBuildContext } from './vite'
2021-10-27 11:35:06 +00:00
export async function writeManifest (ctx: ViteBuildContext, extraEntries: string[] = []) {
2021-10-12 14:05:20 +00:00
// Write client manifest for use in vue-bundle-renderer
const clientDist = resolve(ctx.nuxt.options.buildDir, 'dist/client')
const serverDist = resolve(ctx.nuxt.options.buildDir, 'dist/server')
const entries = [
'@vite/client',
'entry.mjs',
2021-10-27 11:35:06 +00:00
...extraEntries
2021-10-12 14:05:20 +00:00
]
// Legacy dev manifest
const devClientManifest = {
2022-01-18 16:59:14 +00:00
publicPath: joinURL(ctx.nuxt.options.app.baseURL, ctx.nuxt.options.app.buildAssetsDir),
2021-10-12 14:05:20 +00:00
all: entries,
initial: entries,
async: [],
modules: {}
}
const clientManifest = ctx.nuxt.options.dev
? devClientManifest
: await fse.readJSON(resolve(clientDist, 'manifest.json'))
await fse.mkdirp(serverDist)
await fse.writeFile(resolve(serverDist, 'client.manifest.json'), JSON.stringify(clientManifest, null, 2), 'utf8')
await fse.writeFile(resolve(serverDist, 'client.manifest.mjs'), 'export default ' + JSON.stringify(clientManifest, null, 2), 'utf8')
}