Skip to content

Commit 5baecef

Browse files
committedSep 19, 2023
fix: improve manifest.json location
1 parent 48e4bd4 commit 5baecef

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed
 

‎vite-plugin-ssr/node/plugin/plugins/buildConfig.ts

+20-1
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,16 @@ import { extractAssetsAddQuery } from '../../shared/extractAssetsQuery.js'
2626
type InputOption = Rollup.InputOption
2727
import { createRequire } from 'module'
2828
import { getClientEntryFilePath } from '../../shared/getClientEntryFilePath.js'
29+
import fs from 'fs/promises'
30+
import path from 'path'
2931
// @ts-ignore Shimed by dist-cjs-fixup.js for CJS build.
3032
const importMetaUrl: string = import.meta.url
3133
const require_ = createRequire(importMetaUrl)
3234

35+
const manifestTempFile = '_temp_manifest.json'
36+
3337
function buildConfig(): Plugin {
38+
let generateManifest: boolean
3439
return {
3540
name: 'vite-plugin-ssr:buildConfig',
3641
apply: 'build',
@@ -51,13 +56,27 @@ function buildConfig(): Plugin {
5156
}
5257
},
5358
config(config) {
59+
generateManifest = !viteIsSSR(config)
5460
return {
5561
build: {
5662
outDir: resolveOutDir(config),
57-
manifest: !viteIsSSR(config),
63+
manifest: generateManifest ? manifestTempFile : false,
5864
copyPublicDir: !viteIsSSR(config)
5965
}
6066
} satisfies UserConfig
67+
},
68+
async writeBundle(options, bundle) {
69+
const manifestEntry = bundle[manifestTempFile]
70+
if (generateManifest) {
71+
assert(manifestEntry)
72+
const { dir } = options
73+
assert(dir)
74+
const manifestFilePathOld = path.join(dir, manifestEntry.fileName)
75+
const manifestFilePathNew = path.join(dir, '..', 'manifest.json')
76+
await fs.rename(manifestFilePathOld, manifestFilePathNew)
77+
} else {
78+
assert(!manifestEntry)
79+
}
6180
}
6281
}
6382
}

‎vite-plugin-ssr/node/plugin/plugins/importBuild/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ function getImporterCode(config: ResolvedConfig, pageFilesEntry: string) {
4242
` const { setImportBuildGetters } = await import('${importPath}');`,
4343
' setImportBuildGetters({',
4444
` pageFiles: () => import('./${pageFilesEntry}'),`,
45-
" clientManifest: () => require('../client/manifest.json'),",
45+
" clientManifest: () => require('../manifest.json'),",
4646
" pluginManifest: () => require('../client/vite-plugin-ssr.json'),",
4747
' });',
4848
'})()',

0 commit comments

Comments
 (0)
Please sign in to comment.