vike 0.4.223-commit-f1089b4 → 0.4.223-commit-6adb186

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.
Files changed (46) hide show
  1. package/dist/cjs/node/plugin/plugins/build/{pluginAssetsManifest/fixServerAssets.js → handleAssetsManifest.js} +32 -42
  2. package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +55 -24
  3. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +4 -31
  4. package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +6 -10
  5. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
  6. package/dist/cjs/node/plugin/plugins/build/pluginDistFileNames.js +1 -1
  7. package/dist/cjs/node/plugin/plugins/build/pluginDistPackageJsonFile.js +2 -2
  8. package/dist/cjs/node/plugin/plugins/envVars.js +2 -2
  9. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +9 -9
  10. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  11. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  12. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +2 -5
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  15. package/dist/cjs/node/plugin/shared/getOutDirs.js +3 -3
  16. package/dist/cjs/node/plugin/shared/{viteIsSSR.js → isViteServerBuild.js} +20 -11
  17. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  18. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.d.ts +18 -0
  19. package/dist/esm/node/plugin/plugins/build/{pluginAssetsManifest/fixServerAssets.js → handleAssetsManifest.js} +32 -44
  20. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.d.ts +2 -0
  21. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +54 -23
  22. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +5 -32
  23. package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +6 -10
  24. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +0 -1
  25. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
  26. package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.js +1 -1
  27. package/dist/esm/node/plugin/plugins/build/pluginDistPackageJsonFile.js +2 -2
  28. package/dist/esm/node/plugin/plugins/envVars.js +2 -2
  29. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +10 -10
  30. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  31. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  32. package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -5
  33. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
  34. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  35. package/dist/esm/node/plugin/shared/getOutDirs.js +3 -3
  36. package/dist/esm/node/plugin/shared/isViteServerBuild.d.ts +15 -0
  37. package/dist/esm/node/plugin/shared/{viteIsSSR.js → isViteServerBuild.js} +20 -11
  38. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  39. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  40. package/dist/esm/utils/projectInfo.d.ts +1 -1
  41. package/package.json +1 -1
  42. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +0 -20
  43. package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest/fixServerAssets.d.ts +0 -27
  44. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +0 -2
  45. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +0 -17
  46. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +0 -13
@@ -7,7 +7,7 @@ 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 viteIsSSR_js_1 = require("./viteIsSSR.js");
10
+ const isViteServerBuild_js_1 = require("./isViteServerBuild.js");
11
11
  const debug = (0, utils_js_1.createDebugger)('vike:outDir');
12
12
  function getOutDirs(configGlobal, viteEnv) {
13
13
  const configEnv = viteEnv?.config ?? configGlobal;
@@ -21,7 +21,7 @@ function getOutDirs(configGlobal, viteEnv) {
21
21
  /** Appends `client/` or `server/` to `config.build.outDir` */
22
22
  function resolveOutDir(config, isSSR) {
23
23
  debug('resolveOutDir()', new Error().stack);
24
- const isServerSide = (0, viteIsSSR_js_1.viteIsSSR)(config) || isSSR;
24
+ const isServerSide = (0, isViteServerBuild_js_1.isViteServerBuild)(config) || isSSR;
25
25
  debug('isServerSide', isServerSide);
26
26
  const outDir = getOutDirFromViteUserConfig(config) || 'dist';
27
27
  debug('outDir', outDir);
@@ -110,7 +110,7 @@ function assertOutDirResolved(outDir, config) {
110
110
  (0, utils_js_1.assert)('/client'.length === '/server'.length);
111
111
  const outDirCorrected = outDir.slice(0, -1 * '/client'.length);
112
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.`;
113
- if ((0, viteIsSSR_js_1.viteIsSSR)(config)) {
113
+ if ((0, isViteServerBuild_js_1.isViteServerBuild)(config)) {
114
114
  (0, utils_js_1.assertUsage)(outDir.endsWith('/server'), wrongUsage);
115
115
  }
116
116
  else {
@@ -1,25 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.viteIsSSR = viteIsSSR;
4
- exports.viteIsServerBuildEnvAny = viteIsServerBuildEnvAny;
5
- exports.viteIsSSR_options = viteIsSSR_options;
6
- exports.viteIsSSR_safe = viteIsSSR_safe;
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
- // TODO/now: rename_full viteIsSSR isViteServerBuildEnvSsr
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
- // All server-side environments: not only `ssr` but, for example, also `vercel_edge` and `vercel_node`.
14
- function viteIsServerBuildEnvAny(configGlobal, viteEnv) {
15
- return viteEnv ? viteEnv.name === 'ssr' : viteIsSSR(configGlobal);
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 viteIsSSR_options(options) {
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 viteIsSSR_safe(config, options) {
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;
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.223-commit-f1089b4';
5
+ exports.PROJECT_VERSION = '0.4.223-commit-6adb186';
@@ -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 { fixServerAssets_getBuildConfig };
5
- export { fixServerAssets_isEnabled };
6
- export { fixServerAssets_assertUsageCssCodeSplit };
7
- export { fixServerAssets_assertUsageCssTarget };
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 '../../../utils.js';
14
- import { isVirtualFileIdPageConfigValuesAll } from '../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
15
- import { manifestTempFile } from '../pluginBuildConfig.js';
16
- import { getAssetsDir } from '../../../shared/getAssetsDir.js';
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 '../../importUserCode/v1-design/getVikeConfig.js';
19
- import { getOutDirs } from '../../../shared/getOutDirs.js';
20
- import { viteIsServerBuildEnvAny, viteIsSSR } from '../../../shared/viteIsSSR.js';
21
- import { getVikeConfigPublic } from '../../commonConfig.js';
22
- import { set_macro_ASSETS_MANIFEST } from '../pluginBuildEntry.js';
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
- // TODO/now move isV1Design() inside fixServerAssets_isEnabled()
26
- /**
27
- * true => use workaround config.build.ssrEmitAssets
28
- * false => use workaround extractAssets plugin
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 fixServerAssets_assertUsageCssCodeSplit(config) {
225
- const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && isV1Design(config);
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 fixServerAssets_assertUsageCssTarget(config) {
232
- if (!fixServerAssets_isEnabled())
233
- return;
234
- if (!isV1Design(config))
221
+ function handleAssetsManifest_assertUsageCssTarget(config) {
222
+ if (!handleAssetsManifest_isFixEnabled(config))
235
223
  return;
236
- const isServerSide = viteIsSSR(config);
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 fixServerAssets_getBuildConfig(config) {
283
+ function handleAssetsManifest_getBuildConfig(config) {
296
284
  const vike = getVikeConfigPublic(config);
297
- const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && isV1Design(config);
285
+ const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
298
286
  return {
299
287
  // https://github.com/vikejs/vike/issues/1339
300
- ssrEmitAssets: isServerAssetsFixEnabled ? true : undefined,
288
+ ssrEmitAssets: isFixEnabled ? true : undefined,
301
289
  // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
302
- cssMinify: isServerAssetsFixEnabled ? 'esbuild' : undefined,
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
- : !viteIsSSR(config)
295
+ : !isViteServerBuild(config)
308
296
  };
309
297
  }
310
298
  async function handleAssetsManifest(config, viteEnv, options, bundle) {
311
- if (viteIsSSR(config, viteEnv)) {
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 (viteIsServerBuildEnvAny(config, viteEnv)) {
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 isServerAssetsFixEnabled = fixServerAssets_isEnabled() && isV1Design(config);
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 (!isServerAssetsFixEnabled) {
315
+ if (!isFixEnabled) {
328
316
  await fs.copyFile(clientManifestFilePath, assetsJsonFilePath);
329
317
  }
330
318
  else {
@@ -1,3 +1,5 @@
1
1
  export { pluginAutoFullBuild };
2
+ export { isPrerenderForceExit };
2
3
  import type { Plugin } from 'vite';
3
4
  declare function pluginAutoFullBuild(): Plugin[];
5
+ declare function isPrerenderForceExit(): boolean;
@@ -1,7 +1,7 @@
1
1
  export { pluginAutoFullBuild };
2
- import { getFullBuildInlineConfig } from '../../shared/getFullBuildInlineConfig.js';
2
+ export { isPrerenderForceExit };
3
3
  import { build } from 'vite';
4
- import { assert, assertWarning } from '../../utils.js';
4
+ import { assert, assertIsSingleModuleInstance, assertWarning, onSetupBuild } from '../../utils.js';
5
5
  import { runPrerenderFromAutoRun, runPrerender_forceExit } from '../../../prerender/runPrerender.js';
6
6
  import { isPrerenderAutoRunEnabled } from '../../../prerender/context.js';
7
7
  import { isViteCliCall, getViteConfigFromCli } from '../../shared/isViteCliCall.js';
@@ -10,7 +10,9 @@ import { logErrorHint } from '../../../runtime/renderPage/logErrorHint.js';
10
10
  import { manifestTempFile } from './pluginBuildConfig.js';
11
11
  import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
12
12
  import { isVikeCliOrApi } from '../../../api/context.js';
13
- import { handleAssetsManifest } from './pluginAssetsManifest/fixServerAssets.js';
13
+ import { handleAssetsManifest, handleAssetsManifest_assertUsageCssTarget } from './handleAssetsManifest.js';
14
+ import { isViteClientBuild, isViteServerBuild_onlySsrEnv } from '../../shared/isViteServerBuild.js';
15
+ assertIsSingleModuleInstance('build/pluginAutoFullBuild.ts');
14
16
  let forceExit = false;
15
17
  function pluginAutoFullBuild() {
16
18
  let config;
@@ -32,7 +34,7 @@ function pluginAutoFullBuild() {
32
34
  */
33
35
  async handler(options, bundle) {
34
36
  await handleAssetsManifest(config, this.environment, options, bundle);
35
- await triggerFullBuild(config, vikeConfig, bundle);
37
+ await triggerFullBuild(config, vikeConfig, this.environment, bundle);
36
38
  }
37
39
  }
38
40
  },
@@ -44,7 +46,11 @@ function pluginAutoFullBuild() {
44
46
  sequential: true,
45
47
  order: 'post',
46
48
  handler() {
47
- if (forceExit) {
49
+ onSetupBuild();
50
+ handleAssetsManifest_assertUsageCssTarget(config);
51
+ if (forceExit &&
52
+ // Let vike:build:pluginBuildApp force exit
53
+ !vikeConfig.global.config.viteEnvironmentAPI) {
48
54
  runPrerender_forceExit();
49
55
  assert(false);
50
56
  }
@@ -53,10 +59,14 @@ function pluginAutoFullBuild() {
53
59
  }
54
60
  ];
55
61
  }
56
- async function triggerFullBuild(config, vikeConfig, bundle) {
57
- if (config.build.ssr)
58
- return; // already triggered
59
- if (isDisabled(vikeConfig))
62
+ async function triggerFullBuild(config, vikeConfig, viteEnv, bundle) {
63
+ // Whether builder.buildApp() is being used, see plugin:build:pluginBuildApp
64
+ const isBuilderApp = vikeConfig.global.config.viteEnvironmentAPI;
65
+ // If builder.buildApp() => trigger at end of `this.environment.name === 'ssr'`.
66
+ // Else => trigger at end of client-side build.
67
+ if (isBuilderApp ? !isViteServerBuild_onlySsrEnv(config, viteEnv) : !isViteClientBuild(config, viteEnv))
68
+ return;
69
+ if (isEntirelyDisabled(vikeConfig))
60
70
  return;
61
71
  // Workaround for @vitejs/plugin-legacy
62
72
  // - The legacy plugin triggers its own Rollup build for the client-side.
@@ -65,14 +75,19 @@ async function triggerFullBuild(config, vikeConfig, bundle) {
65
75
  if (!bundle[manifestTempFile])
66
76
  return;
67
77
  const configInline = getFullBuildInlineConfig(config);
68
- try {
69
- await build(setSSR(configInline));
78
+ if (!isBuilderApp) {
79
+ try {
80
+ await build(setSSR(configInline));
81
+ }
82
+ catch (err) {
83
+ // Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
84
+ console.error(err);
85
+ logErrorHint(err);
86
+ process.exit(1);
87
+ }
70
88
  }
71
- catch (err) {
72
- // Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
73
- console.error(err);
74
- logErrorHint(err);
75
- process.exit(1);
89
+ else {
90
+ // The server bulid is already called by builder.buildApp()
76
91
  }
77
92
  if (isPrerenderAutoRunEnabled(vikeConfig)) {
78
93
  const res = await runPrerenderFromAutoRun(configInline, config);
@@ -94,16 +109,32 @@ function abortViteBuildSsr(vikeConfig) {
94
109
  process.exit(0);
95
110
  }
96
111
  }
97
- function isDisabled(vikeConfig) {
98
- const { disableAutoFullBuild, viteEnvironmentAPI } = vikeConfig.global.config;
99
- if (viteEnvironmentAPI) {
100
- return true;
101
- }
112
+ function isEntirelyDisabled(vikeConfig) {
113
+ const { disableAutoFullBuild } = vikeConfig.global.config;
102
114
  if (disableAutoFullBuild === undefined || disableAutoFullBuild === 'prerender') {
103
- const isViteApi = !isViteCliCall() && !isVikeCliOrApi();
104
- return isViteApi;
115
+ const isUserUsingViteApi = !isViteCliCall() && !isVikeCliOrApi();
116
+ return isUserUsingViteApi;
105
117
  }
106
118
  else {
107
119
  return disableAutoFullBuild;
108
120
  }
109
121
  }
122
+ function isPrerenderForceExit() {
123
+ return forceExit;
124
+ }
125
+ function getFullBuildInlineConfig(config) {
126
+ const configFromCli = !isViteCliCall() ? null : getViteConfigFromCli();
127
+ if (config._viteConfigEnhanced) {
128
+ return config._viteConfigEnhanced;
129
+ }
130
+ else {
131
+ return {
132
+ ...configFromCli,
133
+ configFile: configFromCli?.configFile || config.configFile,
134
+ root: config.root,
135
+ build: {
136
+ ...configFromCli?.build
137
+ }
138
+ };
139
+ }
140
+ }
@@ -1,16 +1,10 @@
1
1
  export { pluginBuildApp };
2
- import { runPrerender_forceExit, runPrerenderFromAutoRun } from '../../../prerender/runPrerender.js';
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
- buildApp: async (builder) => {
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 (forceExit) {
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 { viteIsSSR } from '../../shared/viteIsSSR.js';
14
+ import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
15
15
  import { resolveOutDir } from '../../shared/getOutDirs.js';
16
- import { fixServerAssets_assertUsageCssCodeSplit, fixServerAssets_assertUsageCssTarget, fixServerAssets_getBuildConfig } from './pluginAssetsManifest/fixServerAssets.js';
16
+ import { handleAssetsManifest_assertUsageCssCodeSplit, 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
- fixServerAssets_assertUsageCssCodeSplit(config);
38
+ handleAssetsManifest_assertUsageCssCodeSplit(config);
39
39
  }
40
40
  },
41
41
  config: {
@@ -45,17 +45,13 @@ function pluginBuildConfig() {
45
45
  return {
46
46
  build: {
47
47
  outDir: resolveOutDir(config),
48
- ...fixServerAssets_getBuildConfig(config)
48
+ ...handleAssetsManifest_getBuildConfig(config)
49
49
  }
50
50
  };
51
51
  }
52
52
  },
53
53
  buildStart() {
54
54
  onSetupBuild();
55
- },
56
- closeBundle() {
57
- onSetupBuild();
58
- fixServerAssets_assertUsageCssTarget(config);
59
55
  }
60
56
  }
61
57
  ];
@@ -68,7 +64,7 @@ async function getEntries(config) {
68
64
  // TODO/now: add meta.default
69
65
  vikeConfig.global.config.includeAssetsImportedByServer ?? true);
70
66
  assertUsage(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
71
- if (viteIsSSR(config)) {
67
+ if (isViteServerBuild(config)) {
72
68
  const pageEntries = getPageEntries(pageConfigs);
73
69
  const entries = {
74
70
  ...pageFileEntries,
@@ -141,7 +137,7 @@ function analyzeClientEntries(pageConfigs, config) {
141
137
  // Ensure Rollup creates entries for each page file, see https://github.com/vikejs/vike/issues/350
142
138
  // (Otherwise the page files may be missing in the client manifest.json)
143
139
  async function getPageFileEntries(config, includeAssetsImportedByServer) {
144
- const isForClientSide = !viteIsSSR(config);
140
+ const isForClientSide = !isViteServerBuild(config);
145
141
  const fileTypes = isForClientSide ? ['.page', '.page.client'] : ['.page', '.page.server'];
146
142
  if (isForClientSide && includeAssetsImportedByServer) {
147
143
  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
- /** Set the value of the ASSETS_MANIFEST constant inside dist/server/entry.js (or dist/server/index.js) */
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 fixServerAssets()
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 { viteIsSSR } from '../../shared/viteIsSSR.js';
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 (!viteIsSSR(config))
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 { viteIsSSR_safe } from '../shared/viteIsSSR.js';
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 = !viteIsSSR_safe(config, options);
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 { fixServerAssets_isEnabled } from './build/pluginAssetsManifest/fixServerAssets.js';
17
- import { getVikeConfig, isV1Design } from './importUserCode/v1-design/getVikeConfig.js';
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 { viteIsSSR_safe } from '../shared/viteIsSSR.js';
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 isServerAssetsFixEnabled;
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 (isServerAssetsFixEnabled) {
43
- // I'm guessing isServerAssetsFixEnabled can only be true when mixing both designs: https://github.com/vikejs/vike/issues/1480
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(!viteIsSSR_safe(config, options));
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 (viteIsSSR_safe(config, options)) {
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
- isServerAssetsFixEnabled = fixServerAssets_isEnabled() && (await isV1Design(config));
144
- if (!isServerAssetsFixEnabled) {
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 { viteIsSSR_options } from '../shared/viteIsSSR.js';
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 = !viteIsSSR_options(options);
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()]);