vike 0.4.223-commit-62ca594 → 0.4.223-commit-33cc798
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/node/plugin/plugins/build/{pluginAssetsManifest/fixServerAssets.js → handleAssetsManifest.js} +69 -28
- package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +38 -29
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +4 -31
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginDistFileNames.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginDistPackageJsonFile.js +2 -2
- package/dist/cjs/node/plugin/plugins/build.js +0 -2
- package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -0
- package/dist/cjs/node/plugin/plugins/envVars.js +2 -2
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +9 -9
- package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +2 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +3 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
- package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +1 -0
- package/dist/cjs/node/plugin/shared/getOutDirs.js +8 -7
- package/dist/cjs/node/plugin/shared/isViteServerBuild.js +47 -0
- package/dist/cjs/node/prerender/runPrerender.js +1 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/requireResolve.js +7 -0
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.d.ts +18 -0
- package/dist/esm/node/plugin/plugins/build/{pluginAssetsManifest/fixServerAssets.js → handleAssetsManifest.js} +69 -28
- package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +39 -30
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +5 -32
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +9 -5
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +0 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.js +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginDistPackageJsonFile.js +2 -2
- package/dist/esm/node/plugin/plugins/build.js +0 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +1 -0
- package/dist/esm/node/plugin/plugins/envVars.js +2 -2
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +10 -10
- package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +3 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
- package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +1 -0
- package/dist/esm/node/plugin/shared/getOutDirs.d.ts +2 -2
- package/dist/esm/node/plugin/shared/getOutDirs.js +8 -7
- package/dist/esm/node/plugin/shared/isViteServerBuild.d.ts +15 -0
- package/dist/esm/node/plugin/shared/isViteServerBuild.js +45 -0
- package/dist/esm/node/prerender/runPrerender.js +1 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/requireResolve.js +7 -0
- package/package.json +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginAssetsManifest.js +0 -115
- package/dist/cjs/node/plugin/shared/viteIsSSR.js +0 -31
- package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest/fixServerAssets.d.ts +0 -22
- package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest.d.ts +0 -3
- package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest.js +0 -110
- package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +0 -11
- package/dist/esm/node/plugin/shared/viteIsSSR.js +0 -29
|
@@ -7,20 +7,21 @@ exports.getOutDirs = getOutDirs;
|
|
|
7
7
|
exports.resolveOutDir = resolveOutDir;
|
|
8
8
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
9
9
|
const utils_js_1 = require("../utils.js");
|
|
10
|
-
const
|
|
10
|
+
const isViteServerBuild_js_1 = require("./isViteServerBuild.js");
|
|
11
11
|
const debug = (0, utils_js_1.createDebugger)('vike:outDir');
|
|
12
|
-
function getOutDirs(
|
|
12
|
+
function getOutDirs(configGlobal, viteEnv) {
|
|
13
|
+
const configEnv = viteEnv?.config ?? configGlobal;
|
|
13
14
|
debug('getOutDirs()', new Error().stack);
|
|
14
|
-
const outDir = getOutDirFromViteResolvedConfig(
|
|
15
|
+
const outDir = getOutDirFromViteResolvedConfig(configEnv);
|
|
15
16
|
if (!isOutDirRoot(outDir))
|
|
16
|
-
assertOutDirResolved(outDir,
|
|
17
|
-
const outDirs = getOutDirsAll(outDir,
|
|
17
|
+
assertOutDirResolved(outDir, configEnv);
|
|
18
|
+
const outDirs = getOutDirsAll(outDir, configEnv.root);
|
|
18
19
|
return outDirs;
|
|
19
20
|
}
|
|
20
21
|
/** Appends `client/` or `server/` to `config.build.outDir` */
|
|
21
22
|
function resolveOutDir(config, isSSR) {
|
|
22
23
|
debug('resolveOutDir()', new Error().stack);
|
|
23
|
-
const isServerSide = (0,
|
|
24
|
+
const isServerSide = (0, isViteServerBuild_js_1.isViteServerBuild)(config) || isSSR;
|
|
24
25
|
debug('isServerSide', isServerSide);
|
|
25
26
|
const outDir = getOutDirFromViteUserConfig(config) || 'dist';
|
|
26
27
|
debug('outDir', outDir);
|
|
@@ -109,7 +110,7 @@ function assertOutDirResolved(outDir, config) {
|
|
|
109
110
|
(0, utils_js_1.assert)('/client'.length === '/server'.length);
|
|
110
111
|
const outDirCorrected = outDir.slice(0, -1 * '/client'.length);
|
|
111
112
|
const wrongUsage = `You've set Vite's config.build.outDir to ${picocolors_1.default.cyan(outDir)} but you should set it to ${picocolors_1.default.cyan(outDirCorrected)} instead.`;
|
|
112
|
-
if ((0,
|
|
113
|
+
if ((0, isViteServerBuild_js_1.isViteServerBuild)(config)) {
|
|
113
114
|
(0, utils_js_1.assertUsage)(outDir.endsWith('/server'), wrongUsage);
|
|
114
115
|
}
|
|
115
116
|
else {
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isViteServerBuild = isViteServerBuild;
|
|
4
|
+
exports.isViteClientBuild = isViteClientBuild;
|
|
5
|
+
exports.isViteServerBuild_options = isViteServerBuild_options;
|
|
6
|
+
exports.isViteServerBuild_safe = isViteServerBuild_safe;
|
|
7
|
+
exports.isViteServerBuild_onlySsrEnv = isViteServerBuild_onlySsrEnv;
|
|
8
|
+
const assert_js_1 = require("../../../utils/assert.js");
|
|
9
|
+
function isViteServerBuild(configGlobal, viteEnv) {
|
|
10
|
+
const configEnv = viteEnv?.config ?? configGlobal;
|
|
11
|
+
return !!configEnv?.build?.ssr;
|
|
12
|
+
}
|
|
13
|
+
// Only `ssr` env: for example don't include `vercel_edge` nor `vercel_node`.
|
|
14
|
+
function isViteServerBuild_onlySsrEnv(configGlobal, viteEnv) {
|
|
15
|
+
return viteEnv ? viteEnv.name === 'ssr' : isViteServerBuild(configGlobal);
|
|
16
|
+
}
|
|
17
|
+
function isViteClientBuild(configGlobal, viteEnv) {
|
|
18
|
+
const yes = !isViteServerBuild(configGlobal, viteEnv);
|
|
19
|
+
const isVite5 = viteEnv === undefined;
|
|
20
|
+
if (!isVite5) {
|
|
21
|
+
const yes2 = viteEnv.name === 'client';
|
|
22
|
+
(0, assert_js_1.assert)(yes === yes2);
|
|
23
|
+
}
|
|
24
|
+
return yes;
|
|
25
|
+
}
|
|
26
|
+
function isViteServerBuild_options(options) {
|
|
27
|
+
return !!options?.ssr;
|
|
28
|
+
}
|
|
29
|
+
// Vite is quite messy about setting `ssr: boolean`, thus we use an extra safe implemention for security purposes.
|
|
30
|
+
// It's used for .client.js and .server.js guarantee thus we use agressive assert() calls for added safety.
|
|
31
|
+
function isViteServerBuild_safe(config, options) {
|
|
32
|
+
if (config.command === 'build') {
|
|
33
|
+
(0, assert_js_1.assert)(typeof config.build.ssr === 'boolean');
|
|
34
|
+
const val = config.build.ssr;
|
|
35
|
+
if (options?.ssr !== undefined)
|
|
36
|
+
(0, assert_js_1.assert)(val === options.ssr);
|
|
37
|
+
return val;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
(0, assert_js_1.assert)(typeof options?.ssr === 'boolean');
|
|
41
|
+
const val = options.ssr;
|
|
42
|
+
/* This assert() fails (which is very unexpected).
|
|
43
|
+
if (typeof config.build.ssr === 'boolean') assert(val === config.build.ssr)
|
|
44
|
+
//*/
|
|
45
|
+
return val;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -95,6 +95,7 @@ async function runPrerenderFromAutoRun(viteConfig, config) {
|
|
|
95
95
|
prerenderContextPublic = ret.prerenderContextPublic;
|
|
96
96
|
}
|
|
97
97
|
catch (err) {
|
|
98
|
+
// Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
|
|
98
99
|
console.error(err);
|
|
99
100
|
(0, logErrorHint_js_1.logErrorHint)(err);
|
|
100
101
|
process.exit(1);
|
|
@@ -34,6 +34,13 @@ function requireResolve(importPath, cwd) {
|
|
|
34
34
|
return importedFile;
|
|
35
35
|
}
|
|
36
36
|
function removeFileExtention(importPath) {
|
|
37
|
+
// Skip for Bun: https://github.com/vikejs/vike/issues/2204
|
|
38
|
+
//@ts-ignore
|
|
39
|
+
if (typeof Bun !== 'undefined') {
|
|
40
|
+
// https://bun.sh/guides/util/detect-bun
|
|
41
|
+
(0, assert_js_1.assert)(process.versions.bun);
|
|
42
|
+
return importPath;
|
|
43
|
+
}
|
|
37
44
|
for (const ext of isScriptFile_js_1.scriptFileExtensionList) {
|
|
38
45
|
const suffix = `.${ext}`;
|
|
39
46
|
if (importPath.endsWith(suffix)) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { handleAssetsManifest };
|
|
2
|
+
export { handleAssetsManifest_getBuildConfig };
|
|
3
|
+
export { handleAssetsManifest_isFixEnabled };
|
|
4
|
+
export { handleAssetsManifest_assertUsageCssCodeSplit };
|
|
5
|
+
export { handleAssetsManifest_assertUsageCssTarget };
|
|
6
|
+
import type { Environment, ResolvedConfig, Rollup, UserConfig } from 'vite';
|
|
7
|
+
type Bundle = Rollup.OutputBundle;
|
|
8
|
+
type Options = Rollup.NormalizedOutputOptions;
|
|
9
|
+
declare function handleAssetsManifest_isFixEnabled(config: ResolvedConfig | UserConfig): boolean;
|
|
10
|
+
declare function handleAssetsManifest_assertUsageCssCodeSplit(config: ResolvedConfig): void;
|
|
11
|
+
declare function handleAssetsManifest_assertUsageCssTarget(config: ResolvedConfig): void;
|
|
12
|
+
declare function handleAssetsManifest_getBuildConfig(config: UserConfig): {
|
|
13
|
+
readonly ssrEmitAssets: true | undefined;
|
|
14
|
+
readonly cssMinify: "esbuild" | undefined;
|
|
15
|
+
readonly manifest: "_temp_manifest.json";
|
|
16
|
+
readonly copyPublicDir: boolean | undefined;
|
|
17
|
+
};
|
|
18
|
+
declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment | undefined, options: Options, bundle: Bundle): Promise<void>;
|
|
@@ -1,30 +1,29 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
1
|
+
export { handleAssetsManifest };
|
|
2
|
+
export { handleAssetsManifest_getBuildConfig };
|
|
3
|
+
export { handleAssetsManifest_isFixEnabled };
|
|
4
|
+
export { handleAssetsManifest_assertUsageCssCodeSplit };
|
|
5
|
+
export { handleAssetsManifest_assertUsageCssTarget };
|
|
6
6
|
import fs from 'fs/promises';
|
|
7
7
|
import fs_sync from 'fs';
|
|
8
8
|
import path from 'path';
|
|
9
9
|
import { existsSync } from 'fs';
|
|
10
|
-
import { assert, assertWarning, isEqualStringList, isObject, pLimit, unique } from '
|
|
11
|
-
import { isVirtualFileIdPageConfigValuesAll } from '
|
|
12
|
-
import { manifestTempFile } from '
|
|
13
|
-
import { getAssetsDir } from '
|
|
10
|
+
import { assert, assertIsSingleModuleInstance, assertWarning, isEqualStringList, isObject, pLimit, unique } from '../../utils.js';
|
|
11
|
+
import { isVirtualFileIdPageConfigValuesAll } from '../../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
|
|
12
|
+
import { manifestTempFile } from './pluginBuildConfig.js';
|
|
13
|
+
import { getAssetsDir } from '../../shared/getAssetsDir.js';
|
|
14
14
|
import pc from '@brillout/picocolors';
|
|
15
|
-
import { isV1Design } from '
|
|
16
|
-
import { getOutDirs } from '
|
|
17
|
-
import {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
function
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
return true;
|
|
15
|
+
import { isV1Design } from '../importUserCode/v1-design/getVikeConfig.js';
|
|
16
|
+
import { getOutDirs } from '../../shared/getOutDirs.js';
|
|
17
|
+
import { isViteServerBuild_onlySsrEnv, isViteServerBuild } from '../../shared/isViteServerBuild.js';
|
|
18
|
+
import { getVikeConfigPublic } from '../commonConfig.js';
|
|
19
|
+
import { set_macro_ASSETS_MANIFEST } from './pluginBuildEntry.js';
|
|
20
|
+
assertIsSingleModuleInstance('build/handleAssetsManifest.ts');
|
|
21
|
+
let assetsJsonFilePath;
|
|
22
|
+
// true => use workaround config.build.ssrEmitAssets
|
|
23
|
+
// false => use workaround extractAssets plugin
|
|
24
|
+
function handleAssetsManifest_isFixEnabled(config) {
|
|
25
|
+
// Allow user to toggle between the two workarounds? E.g. based on https://vike.dev/includeAssetsImportedByServer.
|
|
26
|
+
return isV1Design(config);
|
|
28
27
|
}
|
|
29
28
|
/** https://github.com/vikejs/vike/issues/1339 */
|
|
30
29
|
async function fixServerAssets(config) {
|
|
@@ -213,16 +212,16 @@ function getHash(src) {
|
|
|
213
212
|
return hash;
|
|
214
213
|
}
|
|
215
214
|
// https://github.com/vikejs/vike/issues/1993
|
|
216
|
-
function
|
|
215
|
+
function handleAssetsManifest_assertUsageCssCodeSplit(config) {
|
|
216
|
+
if (!handleAssetsManifest_isFixEnabled(config))
|
|
217
|
+
return;
|
|
217
218
|
assertWarning(config.build.cssCodeSplit, `${pc.cyan('build.cssCodeSplit')} shouldn't be set to ${pc.cyan('false')} (https://github.com/vikejs/vike/issues/1993)`, { onlyOnce: true });
|
|
218
219
|
}
|
|
219
220
|
const targets = [];
|
|
220
|
-
|
|
221
|
-
if (!
|
|
221
|
+
function handleAssetsManifest_assertUsageCssTarget(config) {
|
|
222
|
+
if (!handleAssetsManifest_isFixEnabled(config))
|
|
222
223
|
return;
|
|
223
|
-
|
|
224
|
-
return;
|
|
225
|
-
const isServerSide = viteIsSSR(config);
|
|
224
|
+
const isServerSide = isViteServerBuild(config);
|
|
226
225
|
assert(typeof isServerSide === 'boolean');
|
|
227
226
|
assert(config.build.target !== undefined);
|
|
228
227
|
targets.push({ global: config.build.target, css: config.build.cssTarget, isServerSide });
|
|
@@ -281,3 +280,45 @@ async function writeManifestFile(manifest, manifestFilePath) {
|
|
|
281
280
|
const manifestFileContent = JSON.stringify(manifest, null, 2);
|
|
282
281
|
await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
|
|
283
282
|
}
|
|
283
|
+
function handleAssetsManifest_getBuildConfig(config) {
|
|
284
|
+
const vike = getVikeConfigPublic(config);
|
|
285
|
+
const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
|
|
286
|
+
return {
|
|
287
|
+
// https://github.com/vikejs/vike/issues/1339
|
|
288
|
+
ssrEmitAssets: isFixEnabled ? true : undefined,
|
|
289
|
+
// Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
|
|
290
|
+
cssMinify: isFixEnabled ? 'esbuild' : undefined,
|
|
291
|
+
manifest: manifestTempFile,
|
|
292
|
+
copyPublicDir: vike.config.viteEnvironmentAPI
|
|
293
|
+
? // Already set by vike:build:pluginBuildApp
|
|
294
|
+
undefined
|
|
295
|
+
: !isViteServerBuild(config)
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
async function handleAssetsManifest(config, viteEnv, options, bundle) {
|
|
299
|
+
if (isViteServerBuild_onlySsrEnv(config, viteEnv)) {
|
|
300
|
+
assert(!assetsJsonFilePath);
|
|
301
|
+
const outDirs = getOutDirs(config, viteEnv);
|
|
302
|
+
assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
|
|
303
|
+
await writeAssetsManifestFile(outDirs, assetsJsonFilePath, config);
|
|
304
|
+
}
|
|
305
|
+
if (isViteServerBuild(config, viteEnv)) {
|
|
306
|
+
assert(assetsJsonFilePath);
|
|
307
|
+
// Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
|
|
308
|
+
await set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async function writeAssetsManifestFile(outDirs, assetsJsonFilePath, config) {
|
|
312
|
+
const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
|
|
313
|
+
const clientManifestFilePath = path.posix.join(outDirs.outDirClient, manifestTempFile);
|
|
314
|
+
const serverManifestFilePath = path.posix.join(outDirs.outDirServer, manifestTempFile);
|
|
315
|
+
if (!isFixEnabled) {
|
|
316
|
+
await fs.copyFile(clientManifestFilePath, assetsJsonFilePath);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
const { clientManifestMod } = await fixServerAssets(config);
|
|
320
|
+
await writeManifestFile(clientManifestMod, assetsJsonFilePath);
|
|
321
|
+
}
|
|
322
|
+
await fs.rm(clientManifestFilePath);
|
|
323
|
+
await fs.rm(serverManifestFilePath);
|
|
324
|
+
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { pluginAutoFullBuild };
|
|
2
|
+
export { isPrerenderForceExit };
|
|
2
3
|
import { getFullBuildInlineConfig } from '../../shared/getFullBuildInlineConfig.js';
|
|
3
4
|
import { build } from 'vite';
|
|
4
|
-
import { assert, assertWarning } from '../../utils.js';
|
|
5
|
+
import { assert, assertIsSingleModuleInstance, assertWarning } from '../../utils.js';
|
|
5
6
|
import { runPrerenderFromAutoRun, runPrerender_forceExit } from '../../../prerender/runPrerender.js';
|
|
6
7
|
import { isPrerenderAutoRunEnabled } from '../../../prerender/context.js';
|
|
7
8
|
import { isViteCliCall, getViteConfigFromCli } from '../../shared/isViteCliCall.js';
|
|
@@ -10,6 +11,9 @@ import { logErrorHint } from '../../../runtime/renderPage/logErrorHint.js';
|
|
|
10
11
|
import { manifestTempFile } from './pluginBuildConfig.js';
|
|
11
12
|
import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
|
|
12
13
|
import { isVikeCliOrApi } from '../../../api/context.js';
|
|
14
|
+
import { handleAssetsManifest } from './handleAssetsManifest.js';
|
|
15
|
+
import { isViteClientBuild, isViteServerBuild_onlySsrEnv } from '../../shared/isViteServerBuild.js';
|
|
16
|
+
assertIsSingleModuleInstance('build/pluginAutoFullBuild.ts');
|
|
13
17
|
let forceExit = false;
|
|
14
18
|
function pluginAutoFullBuild() {
|
|
15
19
|
let config;
|
|
@@ -25,19 +29,13 @@ function pluginAutoFullBuild() {
|
|
|
25
29
|
abortViteBuildSsr(vikeConfig);
|
|
26
30
|
},
|
|
27
31
|
writeBundle: {
|
|
28
|
-
/* We can't use this because it breaks Vite's logging. TODO: try again with latest Vite version.
|
|
32
|
+
/* We can't use this because it breaks Vite's logging. TODO/eventually: try again with latest Vite version.
|
|
29
33
|
sequential: true,
|
|
30
34
|
order: 'pre',
|
|
31
35
|
*/
|
|
32
|
-
async handler(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
// Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], for example see https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
|
|
38
|
-
console.error(err);
|
|
39
|
-
process.exit(1);
|
|
40
|
-
}
|
|
36
|
+
async handler(options, bundle) {
|
|
37
|
+
await handleAssetsManifest(config, this.environment, options, bundle);
|
|
38
|
+
await triggerFullBuild(config, vikeConfig, this.environment, bundle);
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
},
|
|
@@ -49,7 +47,9 @@ function pluginAutoFullBuild() {
|
|
|
49
47
|
sequential: true,
|
|
50
48
|
order: 'post',
|
|
51
49
|
handler() {
|
|
52
|
-
if (forceExit
|
|
50
|
+
if (forceExit &&
|
|
51
|
+
// Let vike:build:pluginBuildApp force exit
|
|
52
|
+
!vikeConfig.global.config.viteEnvironmentAPI) {
|
|
53
53
|
runPrerender_forceExit();
|
|
54
54
|
assert(false);
|
|
55
55
|
}
|
|
@@ -58,10 +58,14 @@ function pluginAutoFullBuild() {
|
|
|
58
58
|
}
|
|
59
59
|
];
|
|
60
60
|
}
|
|
61
|
-
async function triggerFullBuild(config, vikeConfig, bundle) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (
|
|
61
|
+
async function triggerFullBuild(config, vikeConfig, viteEnv, bundle) {
|
|
62
|
+
// Whether `builder.buildApp()` is being used, see plugin:build:pluginBuildApp
|
|
63
|
+
const isBuilderApp = vikeConfig.global.config.viteEnvironmentAPI;
|
|
64
|
+
// if builder.buildApp() => trigger at end of `this.environment.name === 'ssr'`.
|
|
65
|
+
// else => trigger at end of client-side build.
|
|
66
|
+
if (isBuilderApp ? !isViteServerBuild_onlySsrEnv(config, viteEnv) : !isViteClientBuild(config, viteEnv))
|
|
67
|
+
return;
|
|
68
|
+
if (isEntirelyDisabled(vikeConfig))
|
|
65
69
|
return;
|
|
66
70
|
// Workaround for @vitejs/plugin-legacy
|
|
67
71
|
// - The legacy plugin triggers its own Rollup build for the client-side.
|
|
@@ -70,13 +74,18 @@ async function triggerFullBuild(config, vikeConfig, bundle) {
|
|
|
70
74
|
if (!bundle[manifestTempFile])
|
|
71
75
|
return;
|
|
72
76
|
const configInline = getFullBuildInlineConfig(config);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
77
|
+
if (
|
|
78
|
+
// Already chained by builder.buildApp()
|
|
79
|
+
!isBuilderApp) {
|
|
80
|
+
try {
|
|
81
|
+
await build(setSSR(configInline));
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
// Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
|
|
85
|
+
console.error(err);
|
|
86
|
+
logErrorHint(err);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
80
89
|
}
|
|
81
90
|
if (isPrerenderAutoRunEnabled(vikeConfig)) {
|
|
82
91
|
const res = await runPrerenderFromAutoRun(configInline, config);
|
|
@@ -98,16 +107,16 @@ function abortViteBuildSsr(vikeConfig) {
|
|
|
98
107
|
process.exit(0);
|
|
99
108
|
}
|
|
100
109
|
}
|
|
101
|
-
function
|
|
102
|
-
const { disableAutoFullBuild
|
|
103
|
-
if (viteEnvironmentAPI) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
110
|
+
function isEntirelyDisabled(vikeConfig) {
|
|
111
|
+
const { disableAutoFullBuild } = vikeConfig.global.config;
|
|
106
112
|
if (disableAutoFullBuild === undefined || disableAutoFullBuild === 'prerender') {
|
|
107
|
-
const
|
|
108
|
-
return
|
|
113
|
+
const isUserUsingViteApi = !isViteCliCall() && !isVikeCliOrApi();
|
|
114
|
+
return isUserUsingViteApi;
|
|
109
115
|
}
|
|
110
116
|
else {
|
|
111
117
|
return disableAutoFullBuild;
|
|
112
118
|
}
|
|
113
119
|
}
|
|
120
|
+
function isPrerenderForceExit() {
|
|
121
|
+
return forceExit;
|
|
122
|
+
}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
export { pluginBuildApp };
|
|
2
|
-
import { runPrerender_forceExit
|
|
3
|
-
import { isPrerenderAutoRunEnabled } from '../../../prerender/context.js';
|
|
2
|
+
import { runPrerender_forceExit } from '../../../prerender/runPrerender.js';
|
|
4
3
|
import { resolveOutDir } from '../../shared/getOutDirs.js';
|
|
5
4
|
import { assert } from '../../utils.js';
|
|
6
|
-
import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
|
|
7
|
-
import { getFullBuildInlineConfig } from '../../shared/getFullBuildInlineConfig.js';
|
|
8
5
|
import { getVikeConfigPublic } from '../commonConfig.js';
|
|
6
|
+
import { isPrerenderForceExit } from './pluginAutoFullBuild.js';
|
|
9
7
|
function pluginBuildApp() {
|
|
10
|
-
let config;
|
|
11
|
-
// `builder.buildApp()` can be overriden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
|
|
12
|
-
// In that case, we should'nt `forceExit`.
|
|
13
|
-
let forceExit = false;
|
|
14
8
|
return [
|
|
15
9
|
{
|
|
16
10
|
name: 'vike:build:pluginBuildApp',
|
|
@@ -21,12 +15,13 @@ function pluginBuildApp() {
|
|
|
21
15
|
return;
|
|
22
16
|
return {
|
|
23
17
|
builder: {
|
|
24
|
-
|
|
18
|
+
// Can be overriden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
|
|
19
|
+
async buildApp(builder) {
|
|
25
20
|
assert(builder.environments.client);
|
|
26
21
|
assert(builder.environments.ssr);
|
|
27
22
|
await builder.build(builder.environments.client);
|
|
28
23
|
await builder.build(builder.environments.ssr);
|
|
29
|
-
if (
|
|
24
|
+
if (isPrerenderForceExit()) {
|
|
30
25
|
runPrerender_forceExit();
|
|
31
26
|
assert(false);
|
|
32
27
|
}
|
|
@@ -50,28 +45,6 @@ function pluginBuildApp() {
|
|
|
50
45
|
}
|
|
51
46
|
};
|
|
52
47
|
}
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: 'vike:build:pluginBuildApp:prerender',
|
|
56
|
-
apply: 'build',
|
|
57
|
-
enforce: 'pre',
|
|
58
|
-
applyToEnvironment(env) {
|
|
59
|
-
return env.name === 'ssr';
|
|
60
|
-
},
|
|
61
|
-
configResolved(_config) {
|
|
62
|
-
config = _config;
|
|
63
|
-
},
|
|
64
|
-
async writeBundle() {
|
|
65
|
-
const vike = getVikeConfigPublic(config);
|
|
66
|
-
if (!vike.config.viteEnvironmentAPI)
|
|
67
|
-
return;
|
|
68
|
-
const vikeConfig = await getVikeConfig(config);
|
|
69
|
-
if (!isPrerenderAutoRunEnabled(vikeConfig))
|
|
70
|
-
return;
|
|
71
|
-
const configInline = getFullBuildInlineConfig(config);
|
|
72
|
-
const res = await runPrerenderFromAutoRun(configInline, config);
|
|
73
|
-
forceExit = res.forceExit;
|
|
74
|
-
}
|
|
75
48
|
}
|
|
76
49
|
];
|
|
77
50
|
}
|
|
@@ -11,8 +11,9 @@ import { createRequire } from 'module';
|
|
|
11
11
|
import { prependEntriesDir } from '../../../shared/prependEntriesDir.js';
|
|
12
12
|
import { getFilePathResolved } from '../../shared/getFilePath.js';
|
|
13
13
|
import { getConfigValueBuildTime } from '../../../../shared/page-configs/getConfigValueBuildTime.js';
|
|
14
|
-
import {
|
|
14
|
+
import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
|
|
15
15
|
import { resolveOutDir } from '../../shared/getOutDirs.js';
|
|
16
|
+
import { handleAssetsManifest_assertUsageCssCodeSplit, handleAssetsManifest_assertUsageCssTarget, handleAssetsManifest_getBuildConfig } from './handleAssetsManifest.js';
|
|
16
17
|
// @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
|
|
17
18
|
const importMetaUrl = import.meta.url;
|
|
18
19
|
const require_ = createRequire(importMetaUrl);
|
|
@@ -34,6 +35,7 @@ function pluginBuildConfig() {
|
|
|
34
35
|
assert(Object.keys(entries).length > 0);
|
|
35
36
|
config.build.rollupOptions.input = injectRollupInputs(entries, config);
|
|
36
37
|
addLogHook();
|
|
38
|
+
handleAssetsManifest_assertUsageCssCodeSplit(config);
|
|
37
39
|
}
|
|
38
40
|
},
|
|
39
41
|
config: {
|
|
@@ -42,7 +44,8 @@ function pluginBuildConfig() {
|
|
|
42
44
|
onSetupBuild();
|
|
43
45
|
return {
|
|
44
46
|
build: {
|
|
45
|
-
outDir: resolveOutDir(config)
|
|
47
|
+
outDir: resolveOutDir(config),
|
|
48
|
+
...handleAssetsManifest_getBuildConfig(config)
|
|
46
49
|
}
|
|
47
50
|
};
|
|
48
51
|
}
|
|
@@ -50,8 +53,9 @@ function pluginBuildConfig() {
|
|
|
50
53
|
buildStart() {
|
|
51
54
|
onSetupBuild();
|
|
52
55
|
},
|
|
53
|
-
|
|
56
|
+
closeBundle() {
|
|
54
57
|
onSetupBuild();
|
|
58
|
+
handleAssetsManifest_assertUsageCssTarget(config);
|
|
55
59
|
}
|
|
56
60
|
}
|
|
57
61
|
];
|
|
@@ -64,7 +68,7 @@ async function getEntries(config) {
|
|
|
64
68
|
// TODO/now: add meta.default
|
|
65
69
|
vikeConfig.global.config.includeAssetsImportedByServer ?? true);
|
|
66
70
|
assertUsage(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
|
|
67
|
-
if (
|
|
71
|
+
if (isViteServerBuild(config)) {
|
|
68
72
|
const pageEntries = getPageEntries(pageConfigs);
|
|
69
73
|
const entries = {
|
|
70
74
|
...pageFileEntries,
|
|
@@ -137,7 +141,7 @@ function analyzeClientEntries(pageConfigs, config) {
|
|
|
137
141
|
// Ensure Rollup creates entries for each page file, see https://github.com/vikejs/vike/issues/350
|
|
138
142
|
// (Otherwise the page files may be missing in the client manifest.json)
|
|
139
143
|
async function getPageFileEntries(config, includeAssetsImportedByServer) {
|
|
140
|
-
const isForClientSide = !
|
|
144
|
+
const isForClientSide = !isViteServerBuild(config);
|
|
141
145
|
const fileTypes = isForClientSide ? ['.page', '.page.client'] : ['.page', '.page.server'];
|
|
142
146
|
if (isForClientSide && includeAssetsImportedByServer) {
|
|
143
147
|
fileTypes.push('.page.server');
|
|
@@ -4,5 +4,4 @@ import type { Plugin, Rollup } from 'vite';
|
|
|
4
4
|
type Bundle = Rollup.OutputBundle;
|
|
5
5
|
type Options = Rollup.NormalizedOutputOptions;
|
|
6
6
|
declare function pluginBuildEntry(): Plugin[];
|
|
7
|
-
/** Set the value of the ASSETS_MANIFEST constant inside dist/server/entry.js (or dist/server/index.js) */
|
|
8
7
|
declare function set_macro_ASSETS_MANIFEST(options: Options, bundle: Bundle, assetsJsonFilePath: string): Promise<void>;
|
|
@@ -59,7 +59,7 @@ function getServerProductionEntryCode(config) {
|
|
|
59
59
|
].join('\n');
|
|
60
60
|
return importerCode;
|
|
61
61
|
}
|
|
62
|
-
|
|
62
|
+
// Set the value of the ASSETS_MANIFEST constant inside dist/server/entry.js (or dist/server/index.js)
|
|
63
63
|
async function set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath) {
|
|
64
64
|
const { dir } = options;
|
|
65
65
|
assert(dir);
|
|
@@ -28,7 +28,7 @@ function pluginDistFileNames() {
|
|
|
28
28
|
else {
|
|
29
29
|
// If a user needs this:
|
|
30
30
|
// - assertUsage() that the naming provided by the user ends with `.[hash][extname]`
|
|
31
|
-
// - It's needed for getHash() of
|
|
31
|
+
// - It's needed for getHash() of handleAssetsManifest()
|
|
32
32
|
// - Asset URLs should always contain a hash: it's paramount for caching assets.
|
|
33
33
|
// - If rollupOutput.assetFileNames is a function then use a wrapper function to apply the assertUsage()
|
|
34
34
|
assertUsage(false, "Setting Vite's configuration build.rollupOptions.output.assetFileNames is currently forbidden. Reach out if you need to use.");
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// TODO/refactor: prefix all other plugins with `plugin` as well?
|
|
10
10
|
export { pluginDistPackageJsonFile };
|
|
11
11
|
import { rollupIsEsm } from '../../shared/rollupIsEsm.js';
|
|
12
|
-
import {
|
|
12
|
+
import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
|
|
13
13
|
function pluginDistPackageJsonFile() {
|
|
14
14
|
let config;
|
|
15
15
|
return {
|
|
@@ -19,7 +19,7 @@ function pluginDistPackageJsonFile() {
|
|
|
19
19
|
config = config_;
|
|
20
20
|
},
|
|
21
21
|
generateBundle(options, bundle) {
|
|
22
|
-
if (!
|
|
22
|
+
if (!isViteServerBuild(config))
|
|
23
23
|
return;
|
|
24
24
|
const isEsm = rollupIsEsm(options);
|
|
25
25
|
const fileName = 'package.json';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { build };
|
|
2
|
-
import { pluginAssetsManifest } from './build/pluginAssetsManifest.js';
|
|
3
2
|
import { pluginBuildApp } from './build/pluginBuildApp.js';
|
|
4
3
|
import { pluginDistPackageJsonFile } from './build/pluginDistPackageJsonFile.js';
|
|
5
4
|
import { pluginSuppressRollupWarning } from './build/pluginSuppressRollupWarning.js';
|
|
@@ -9,7 +8,6 @@ import { pluginBuildEntry } from './build/pluginBuildEntry.js';
|
|
|
9
8
|
import { pluginBuildConfig } from './build/pluginBuildConfig.js';
|
|
10
9
|
function build() {
|
|
11
10
|
return [
|
|
12
|
-
...pluginAssetsManifest(),
|
|
13
11
|
...pluginBuildConfig(),
|
|
14
12
|
...pluginBuildApp(),
|
|
15
13
|
...pluginAutoFullBuild(),
|
|
@@ -4,7 +4,7 @@ import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, isArr
|
|
|
4
4
|
import { sourceMapPassthrough } from '../shared/rollupSourceMap.js';
|
|
5
5
|
import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
|
|
6
6
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
7
|
-
import {
|
|
7
|
+
import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
|
|
8
8
|
// TODO/enventually: (after we implemented vike.config.js)
|
|
9
9
|
// - Make import.meta.env work inside +config.js
|
|
10
10
|
// - For it to work, we'll probably need the user to define the settings (e.g. `envDir`) for loadEnv() inside vike.config.js instead of vite.config.js
|
|
@@ -37,7 +37,7 @@ function envVarsPlugin() {
|
|
|
37
37
|
if (!code.includes('import.meta.env.'))
|
|
38
38
|
return;
|
|
39
39
|
const isBuild = config.command === 'build';
|
|
40
|
-
const isClientSide = !
|
|
40
|
+
const isClientSide = !isViteServerBuild_safe(config, options);
|
|
41
41
|
Object.entries(envsAll)
|
|
42
42
|
.filter(([key]) => {
|
|
43
43
|
// Already handled by Vite
|