vike 0.4.223-commit-f1089b4 → 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} +32 -42
- package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +36 -23
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +4 -31
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +7 -7
- 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/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 +0 -1
- 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 +3 -3
- package/dist/cjs/node/plugin/shared/{viteIsSSR.js → isViteServerBuild.js} +20 -11
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.d.ts +18 -0
- package/dist/esm/node/plugin/plugins/build/{pluginAssetsManifest/fixServerAssets.js → handleAssetsManifest.js} +32 -44
- package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +36 -23
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +5 -32
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +7 -7
- 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/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.js +0 -1
- 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.js +3 -3
- package/dist/esm/node/plugin/shared/isViteServerBuild.d.ts +15 -0
- package/dist/esm/node/plugin/shared/{viteIsSSR.js → isViteServerBuild.js} +20 -11
- 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/package.json +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest/fixServerAssets.d.ts +0 -27
- package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +0 -13
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.
|
|
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;
|
|
7
8
|
const assert_js_1 = require("../../../utils/assert.js");
|
|
8
|
-
|
|
9
|
-
function viteIsSSR(configGlobal, viteEnv) {
|
|
9
|
+
function isViteServerBuild(configGlobal, viteEnv) {
|
|
10
10
|
const configEnv = viteEnv?.config ?? configGlobal;
|
|
11
11
|
return !!configEnv?.build?.ssr;
|
|
12
12
|
}
|
|
13
|
-
//
|
|
14
|
-
function
|
|
15
|
-
return viteEnv ? viteEnv.name === 'ssr' :
|
|
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
16
|
}
|
|
17
|
-
function
|
|
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) {
|
|
18
27
|
return !!options?.ssr;
|
|
19
28
|
}
|
|
20
29
|
// Vite is quite messy about setting `ssr: boolean`, thus we use an extra safe implemention for security purposes.
|
|
21
30
|
// It's used for .client.js and .server.js guarantee thus we use agressive assert() calls for added safety.
|
|
22
|
-
function
|
|
31
|
+
function isViteServerBuild_safe(config, options) {
|
|
23
32
|
if (config.command === 'build') {
|
|
24
33
|
(0, assert_js_1.assert)(typeof config.build.ssr === 'boolean');
|
|
25
34
|
const val = config.build.ssr;
|
|
@@ -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,38 +1,29 @@
|
|
|
1
|
-
// TODO/now: move this file
|
|
2
|
-
// TODO/now: rename_full fixServerAssets handleAssetsManifest
|
|
3
1
|
export { handleAssetsManifest };
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export { writeManifestFile };
|
|
2
|
+
export { handleAssetsManifest_getBuildConfig };
|
|
3
|
+
export { handleAssetsManifest_isFixEnabled };
|
|
4
|
+
export { handleAssetsManifest_assertUsageCssCodeSplit };
|
|
5
|
+
export { handleAssetsManifest_assertUsageCssTarget };
|
|
9
6
|
import fs from 'fs/promises';
|
|
10
7
|
import fs_sync from 'fs';
|
|
11
8
|
import path from 'path';
|
|
12
9
|
import { existsSync } from 'fs';
|
|
13
|
-
import { assert, assertIsSingleModuleInstance, assertWarning, isEqualStringList, isObject, pLimit, unique } from '
|
|
14
|
-
import { isVirtualFileIdPageConfigValuesAll } from '
|
|
15
|
-
import { manifestTempFile } from '
|
|
16
|
-
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';
|
|
17
14
|
import pc from '@brillout/picocolors';
|
|
18
|
-
import { isV1Design } from '
|
|
19
|
-
import { getOutDirs } from '
|
|
20
|
-
import {
|
|
21
|
-
import { getVikeConfigPublic } from '
|
|
22
|
-
import { set_macro_ASSETS_MANIFEST } from '
|
|
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';
|
|
23
20
|
assertIsSingleModuleInstance('build/handleAssetsManifest.ts');
|
|
24
21
|
let assetsJsonFilePath;
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
* Only used by V1 design.
|
|
31
|
-
*/
|
|
32
|
-
function fixServerAssets_isEnabled() {
|
|
33
|
-
// We currently apply the workaround iff V1 design.
|
|
34
|
-
// Shall we allow the user to toggle between the two workarounds? E.g. based on https://vike.dev/includeAssetsImportedByServer.
|
|
35
|
-
return true;
|
|
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);
|
|
36
27
|
}
|
|
37
28
|
/** https://github.com/vikejs/vike/issues/1339 */
|
|
38
29
|
async function fixServerAssets(config) {
|
|
@@ -221,19 +212,16 @@ function getHash(src) {
|
|
|
221
212
|
return hash;
|
|
222
213
|
}
|
|
223
214
|
// https://github.com/vikejs/vike/issues/1993
|
|
224
|
-
function
|
|
225
|
-
|
|
226
|
-
if (!isServerAssetsFixEnabled)
|
|
215
|
+
function handleAssetsManifest_assertUsageCssCodeSplit(config) {
|
|
216
|
+
if (!handleAssetsManifest_isFixEnabled(config))
|
|
227
217
|
return;
|
|
228
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 });
|
|
229
219
|
}
|
|
230
220
|
const targets = [];
|
|
231
|
-
function
|
|
232
|
-
if (!
|
|
233
|
-
return;
|
|
234
|
-
if (!isV1Design(config))
|
|
221
|
+
function handleAssetsManifest_assertUsageCssTarget(config) {
|
|
222
|
+
if (!handleAssetsManifest_isFixEnabled(config))
|
|
235
223
|
return;
|
|
236
|
-
const isServerSide =
|
|
224
|
+
const isServerSide = isViteServerBuild(config);
|
|
237
225
|
assert(typeof isServerSide === 'boolean');
|
|
238
226
|
assert(config.build.target !== undefined);
|
|
239
227
|
targets.push({ global: config.build.target, css: config.build.cssTarget, isServerSide });
|
|
@@ -292,39 +280,39 @@ async function writeManifestFile(manifest, manifestFilePath) {
|
|
|
292
280
|
const manifestFileContent = JSON.stringify(manifest, null, 2);
|
|
293
281
|
await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
|
|
294
282
|
}
|
|
295
|
-
function
|
|
283
|
+
function handleAssetsManifest_getBuildConfig(config) {
|
|
296
284
|
const vike = getVikeConfigPublic(config);
|
|
297
|
-
const
|
|
285
|
+
const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
|
|
298
286
|
return {
|
|
299
287
|
// https://github.com/vikejs/vike/issues/1339
|
|
300
|
-
ssrEmitAssets:
|
|
288
|
+
ssrEmitAssets: isFixEnabled ? true : undefined,
|
|
301
289
|
// Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
|
|
302
|
-
cssMinify:
|
|
290
|
+
cssMinify: isFixEnabled ? 'esbuild' : undefined,
|
|
303
291
|
manifest: manifestTempFile,
|
|
304
292
|
copyPublicDir: vike.config.viteEnvironmentAPI
|
|
305
293
|
? // Already set by vike:build:pluginBuildApp
|
|
306
294
|
undefined
|
|
307
|
-
: !
|
|
295
|
+
: !isViteServerBuild(config)
|
|
308
296
|
};
|
|
309
297
|
}
|
|
310
298
|
async function handleAssetsManifest(config, viteEnv, options, bundle) {
|
|
311
|
-
if (
|
|
299
|
+
if (isViteServerBuild_onlySsrEnv(config, viteEnv)) {
|
|
312
300
|
assert(!assetsJsonFilePath);
|
|
313
301
|
const outDirs = getOutDirs(config, viteEnv);
|
|
314
302
|
assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
|
|
315
303
|
await writeAssetsManifestFile(outDirs, assetsJsonFilePath, config);
|
|
316
304
|
}
|
|
317
|
-
if (
|
|
305
|
+
if (isViteServerBuild(config, viteEnv)) {
|
|
318
306
|
assert(assetsJsonFilePath);
|
|
319
307
|
// Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
|
|
320
308
|
await set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath);
|
|
321
309
|
}
|
|
322
310
|
}
|
|
323
311
|
async function writeAssetsManifestFile(outDirs, assetsJsonFilePath, config) {
|
|
324
|
-
const
|
|
312
|
+
const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
|
|
325
313
|
const clientManifestFilePath = path.posix.join(outDirs.outDirClient, manifestTempFile);
|
|
326
314
|
const serverManifestFilePath = path.posix.join(outDirs.outDirServer, manifestTempFile);
|
|
327
|
-
if (!
|
|
315
|
+
if (!isFixEnabled) {
|
|
328
316
|
await fs.copyFile(clientManifestFilePath, assetsJsonFilePath);
|
|
329
317
|
}
|
|
330
318
|
else {
|
|
@@ -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,7 +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';
|
|
13
|
-
import { handleAssetsManifest } from './
|
|
14
|
+
import { handleAssetsManifest } from './handleAssetsManifest.js';
|
|
15
|
+
import { isViteClientBuild, isViteServerBuild_onlySsrEnv } from '../../shared/isViteServerBuild.js';
|
|
16
|
+
assertIsSingleModuleInstance('build/pluginAutoFullBuild.ts');
|
|
14
17
|
let forceExit = false;
|
|
15
18
|
function pluginAutoFullBuild() {
|
|
16
19
|
let config;
|
|
@@ -32,7 +35,7 @@ function pluginAutoFullBuild() {
|
|
|
32
35
|
*/
|
|
33
36
|
async handler(options, bundle) {
|
|
34
37
|
await handleAssetsManifest(config, this.environment, options, bundle);
|
|
35
|
-
await triggerFullBuild(config, vikeConfig, bundle);
|
|
38
|
+
await triggerFullBuild(config, vikeConfig, this.environment, bundle);
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
},
|
|
@@ -44,7 +47,9 @@ function pluginAutoFullBuild() {
|
|
|
44
47
|
sequential: true,
|
|
45
48
|
order: 'post',
|
|
46
49
|
handler() {
|
|
47
|
-
if (forceExit
|
|
50
|
+
if (forceExit &&
|
|
51
|
+
// Let vike:build:pluginBuildApp force exit
|
|
52
|
+
!vikeConfig.global.config.viteEnvironmentAPI) {
|
|
48
53
|
runPrerender_forceExit();
|
|
49
54
|
assert(false);
|
|
50
55
|
}
|
|
@@ -53,10 +58,14 @@ function pluginAutoFullBuild() {
|
|
|
53
58
|
}
|
|
54
59
|
];
|
|
55
60
|
}
|
|
56
|
-
async function triggerFullBuild(config, vikeConfig, bundle) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
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))
|
|
60
69
|
return;
|
|
61
70
|
// Workaround for @vitejs/plugin-legacy
|
|
62
71
|
// - The legacy plugin triggers its own Rollup build for the client-side.
|
|
@@ -65,14 +74,18 @@ async function triggerFullBuild(config, vikeConfig, bundle) {
|
|
|
65
74
|
if (!bundle[manifestTempFile])
|
|
66
75
|
return;
|
|
67
76
|
const configInline = getFullBuildInlineConfig(config);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
+
}
|
|
76
89
|
}
|
|
77
90
|
if (isPrerenderAutoRunEnabled(vikeConfig)) {
|
|
78
91
|
const res = await runPrerenderFromAutoRun(configInline, config);
|
|
@@ -94,16 +107,16 @@ function abortViteBuildSsr(vikeConfig) {
|
|
|
94
107
|
process.exit(0);
|
|
95
108
|
}
|
|
96
109
|
}
|
|
97
|
-
function
|
|
98
|
-
const { disableAutoFullBuild
|
|
99
|
-
if (viteEnvironmentAPI) {
|
|
100
|
-
return true;
|
|
101
|
-
}
|
|
110
|
+
function isEntirelyDisabled(vikeConfig) {
|
|
111
|
+
const { disableAutoFullBuild } = vikeConfig.global.config;
|
|
102
112
|
if (disableAutoFullBuild === undefined || disableAutoFullBuild === 'prerender') {
|
|
103
|
-
const
|
|
104
|
-
return
|
|
113
|
+
const isUserUsingViteApi = !isViteCliCall() && !isVikeCliOrApi();
|
|
114
|
+
return isUserUsingViteApi;
|
|
105
115
|
}
|
|
106
116
|
else {
|
|
107
117
|
return disableAutoFullBuild;
|
|
108
118
|
}
|
|
109
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 shouldn't `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,9 +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 {
|
|
16
|
+
import { handleAssetsManifest_assertUsageCssCodeSplit, handleAssetsManifest_assertUsageCssTarget, handleAssetsManifest_getBuildConfig } from './handleAssetsManifest.js';
|
|
17
17
|
// @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
|
|
18
18
|
const importMetaUrl = import.meta.url;
|
|
19
19
|
const require_ = createRequire(importMetaUrl);
|
|
@@ -35,7 +35,7 @@ function pluginBuildConfig() {
|
|
|
35
35
|
assert(Object.keys(entries).length > 0);
|
|
36
36
|
config.build.rollupOptions.input = injectRollupInputs(entries, config);
|
|
37
37
|
addLogHook();
|
|
38
|
-
|
|
38
|
+
handleAssetsManifest_assertUsageCssCodeSplit(config);
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
config: {
|
|
@@ -45,7 +45,7 @@ function pluginBuildConfig() {
|
|
|
45
45
|
return {
|
|
46
46
|
build: {
|
|
47
47
|
outDir: resolveOutDir(config),
|
|
48
|
-
...
|
|
48
|
+
...handleAssetsManifest_getBuildConfig(config)
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
}
|
|
@@ -55,7 +55,7 @@ function pluginBuildConfig() {
|
|
|
55
55
|
},
|
|
56
56
|
closeBundle() {
|
|
57
57
|
onSetupBuild();
|
|
58
|
-
|
|
58
|
+
handleAssetsManifest_assertUsageCssTarget(config);
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
];
|
|
@@ -68,7 +68,7 @@ async function getEntries(config) {
|
|
|
68
68
|
// TODO/now: add meta.default
|
|
69
69
|
vikeConfig.global.config.includeAssetsImportedByServer ?? true);
|
|
70
70
|
assertUsage(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
|
|
71
|
-
if (
|
|
71
|
+
if (isViteServerBuild(config)) {
|
|
72
72
|
const pageEntries = getPageEntries(pageConfigs);
|
|
73
73
|
const entries = {
|
|
74
74
|
...pageFileEntries,
|
|
@@ -141,7 +141,7 @@ function analyzeClientEntries(pageConfigs, config) {
|
|
|
141
141
|
// Ensure Rollup creates entries for each page file, see https://github.com/vikejs/vike/issues/350
|
|
142
142
|
// (Otherwise the page files may be missing in the client manifest.json)
|
|
143
143
|
async function getPageFileEntries(config, includeAssetsImportedByServer) {
|
|
144
|
-
const isForClientSide = !
|
|
144
|
+
const isForClientSide = !isViteServerBuild(config);
|
|
145
145
|
const fileTypes = isForClientSide ? ['.page', '.page.client'] : ['.page', '.page.server'];
|
|
146
146
|
if (isForClientSide && includeAssetsImportedByServer) {
|
|
147
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';
|
|
@@ -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
|
|
@@ -13,11 +13,11 @@ import { isAsset } from '../shared/isAsset.js';
|
|
|
13
13
|
import { getImportStatements } from '../shared/parseEsModule.js';
|
|
14
14
|
import { sourceMapRemove } from '../shared/rollupSourceMap.js';
|
|
15
15
|
import pc from '@brillout/picocolors';
|
|
16
|
-
import {
|
|
17
|
-
import { getVikeConfig
|
|
16
|
+
import { handleAssetsManifest_isFixEnabled } from './build/handleAssetsManifest.js';
|
|
17
|
+
import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
|
|
18
18
|
import { assertV1Design } from '../../shared/assertV1Design.js';
|
|
19
19
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
20
|
-
import {
|
|
20
|
+
import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
|
|
21
21
|
const extractAssetsRE = /(\?|&)extractAssets(?:&|$)/;
|
|
22
22
|
const rawRE = /(\?|&)raw(?:&|$)/;
|
|
23
23
|
const urlRE = /(\?|&)url(?:&|$)/;
|
|
@@ -26,7 +26,7 @@ const debug = createDebugger('vike:extractAssets');
|
|
|
26
26
|
function extractAssetsPlugin() {
|
|
27
27
|
let config;
|
|
28
28
|
let vikeConfig;
|
|
29
|
-
let
|
|
29
|
+
let isFixEnabled;
|
|
30
30
|
return [
|
|
31
31
|
// This plugin removes all JavaScript from server-side only code, so that only CSS imports remains. (And also satic files imports e.g. `import logoURL from './logo.svg.js'`).
|
|
32
32
|
{
|
|
@@ -39,14 +39,14 @@ function extractAssetsPlugin() {
|
|
|
39
39
|
if (!extractAssetsRE.test(id)) {
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
if (
|
|
43
|
-
// I'm guessing
|
|
42
|
+
if (isFixEnabled) {
|
|
43
|
+
// I'm guessing isFixEnabled can only be true when mixing both designs: https://github.com/vikejs/vike/issues/1480
|
|
44
44
|
assertV1Design(vikeConfig.pageConfigs, true);
|
|
45
45
|
assert(false);
|
|
46
46
|
}
|
|
47
47
|
// TODO/now: add meta.default
|
|
48
48
|
assert(vikeConfig.global.config.includeAssetsImportedByServer ?? true);
|
|
49
|
-
assert(!
|
|
49
|
+
assert(!isViteServerBuild_safe(config, options));
|
|
50
50
|
const importStatements = await getImportStatements(src);
|
|
51
51
|
const moduleNames = getImportedModules(importStatements);
|
|
52
52
|
const code = moduleNames.map((moduleName) => `import '${moduleName}';`).join('\n');
|
|
@@ -63,7 +63,7 @@ function extractAssetsPlugin() {
|
|
|
63
63
|
// - Vite's `vite:resolve` plugin; https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/resolve.ts#L105
|
|
64
64
|
enforce: 'pre',
|
|
65
65
|
async resolveId(source, importer, options) {
|
|
66
|
-
if (
|
|
66
|
+
if (isViteServerBuild_safe(config, options)) {
|
|
67
67
|
// When building for the server, there should never be a `?extractAssets` query
|
|
68
68
|
assert(!extractAssetsRE.test(source));
|
|
69
69
|
assert(importer === undefined || !extractAssetsRE.test(importer));
|
|
@@ -140,8 +140,8 @@ function extractAssetsPlugin() {
|
|
|
140
140
|
async configResolved(config_) {
|
|
141
141
|
config = config_;
|
|
142
142
|
vikeConfig = await getVikeConfig(config);
|
|
143
|
-
|
|
144
|
-
if (!
|
|
143
|
+
isFixEnabled = handleAssetsManifest_isFixEnabled(config);
|
|
144
|
+
if (!isFixEnabled) {
|
|
145
145
|
// https://github.com/vikejs/vike/issues/1060
|
|
146
146
|
assertUsage(!config.plugins.find((p) => p.name === 'vite-tsconfig-paths'), 'vite-tsconfig-paths not supported, remove it and use vite.config.js#resolve.alias instead');
|
|
147
147
|
}
|
|
@@ -5,7 +5,7 @@ import { assert, getFileExtension, createDebugger, getGlobalObject, assertUsage
|
|
|
5
5
|
import { getExportNames } from '../shared/parseEsModule.js';
|
|
6
6
|
import { sourceMapRemove } from '../shared/rollupSourceMap.js';
|
|
7
7
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
8
|
-
import {
|
|
8
|
+
import { isViteServerBuild_options } from '../shared/isViteServerBuild.js';
|
|
9
9
|
const extractExportNamesRE = /(\?|&)extractExportNames(?:&|$)/;
|
|
10
10
|
const debug = createDebugger('vike:extractExportNames');
|
|
11
11
|
const globalObject = getGlobalObject('plugins/extractExportNamesPlugin.ts', {});
|
|
@@ -16,7 +16,7 @@ function extractExportNamesPlugin() {
|
|
|
16
16
|
enforce: 'post',
|
|
17
17
|
async transform(src, id, options) {
|
|
18
18
|
id = normalizeId(id);
|
|
19
|
-
const isClientSide = !
|
|
19
|
+
const isClientSide = !isViteServerBuild_options(options);
|
|
20
20
|
if (extractExportNamesRE.test(id)) {
|
|
21
21
|
const code = await getExtractExportNamesCode(src, isClientSide, !isDev, id);
|
|
22
22
|
debug('id ' + id, ['result:\n' + code.code.trim(), 'src:\n' + src.trim()]);
|
|
@@ -7,12 +7,12 @@ import path from 'path';
|
|
|
7
7
|
import { getVirtualFilePageConfigs } from './v1-design/virtual-files/getVirtualFilePageConfigs.js';
|
|
8
8
|
import { isV1Design as isV1Design_ } from './v1-design/getVikeConfig.js';
|
|
9
9
|
import { getOutDirs } from '../../shared/getOutDirs.js';
|
|
10
|
-
import {
|
|
10
|
+
import { isViteServerBuild_options } from '../../shared/isViteServerBuild.js';
|
|
11
11
|
async function getVirtualFileImportUserCode(id, options, vikeConfig, config, isDev) {
|
|
12
12
|
const idParsed = isVirtualFileIdImportUserCode(id);
|
|
13
13
|
assert(idParsed);
|
|
14
14
|
const { isForClientSide, isClientRouting } = idParsed;
|
|
15
|
-
assert(isForClientSide === !
|
|
15
|
+
assert(isForClientSide === !isViteServerBuild_options(options));
|
|
16
16
|
const code = await getCode(config, vikeConfig, isForClientSide, isClientRouting, isDev, id);
|
|
17
17
|
return code;
|
|
18
18
|
}
|
|
@@ -69,7 +69,7 @@ ${await getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, c
|
|
|
69
69
|
|
|
70
70
|
`;
|
|
71
71
|
// We still use import.meta.glob() when using th V1 design in order to not break the V1 design deprecation warning
|
|
72
|
-
const isV1Design =
|
|
72
|
+
const isV1Design = isV1Design_(config);
|
|
73
73
|
// Old design => no + files => only to enable pre-rendering is setting `vike({prerender})` in vite.config.js
|
|
74
74
|
const isPrerendering = !!vikeConfig.global.config.prerender;
|
|
75
75
|
fileTypes
|
|
@@ -21,11 +21,8 @@ function importUserCode() {
|
|
|
21
21
|
vikeConfig = await getVikeConfig(config_);
|
|
22
22
|
config = config_;
|
|
23
23
|
// TODO/v1-release: remove
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (!isV1)
|
|
27
|
-
config.experimental.importGlobRestoreExtension = true;
|
|
28
|
-
}
|
|
24
|
+
if (!isV1Design(config))
|
|
25
|
+
config.experimental.importGlobRestoreExtension = true;
|
|
29
26
|
},
|
|
30
27
|
resolveId(id) {
|
|
31
28
|
if (isVirtualFileId(id)) {
|
|
@@ -85,7 +85,6 @@ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doN
|
|
|
85
85
|
}
|
|
86
86
|
return await vikeConfigPromise;
|
|
87
87
|
}
|
|
88
|
-
// TODO/now update all isV1Design() usage
|
|
89
88
|
function isV1Design(config) {
|
|
90
89
|
const vikeConfig = config._vikeConfigObject;
|
|
91
90
|
assert(vikeConfig);
|