vike 0.4.223-commit-62ca594 → 0.4.223-commit-f1089b4

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 (35) hide show
  1. package/dist/cjs/node/plugin/plugins/build/pluginAssetsManifest/fixServerAssets.js +54 -3
  2. package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +6 -10
  3. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
  4. package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +6 -2
  5. package/dist/cjs/node/plugin/plugins/build.js +0 -2
  6. package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -0
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +4 -2
  8. package/dist/cjs/node/plugin/shared/getOutDirs.js +5 -4
  9. package/dist/cjs/node/plugin/shared/viteIsSSR.js +9 -2
  10. package/dist/cjs/node/prerender/runPrerender.js +1 -0
  11. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  12. package/dist/cjs/utils/requireResolve.js +7 -0
  13. package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest/fixServerAssets.d.ts +14 -9
  14. package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest/fixServerAssets.js +58 -5
  15. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +6 -10
  16. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +1 -1
  17. package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +6 -2
  18. package/dist/esm/node/plugin/plugins/build.js +0 -2
  19. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
  20. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -0
  21. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
  22. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +4 -2
  23. package/dist/esm/node/plugin/shared/getOutDirs.d.ts +2 -2
  24. package/dist/esm/node/plugin/shared/getOutDirs.js +5 -4
  25. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +4 -2
  26. package/dist/esm/node/plugin/shared/viteIsSSR.js +9 -2
  27. package/dist/esm/node/prerender/runPrerender.js +1 -0
  28. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  29. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  30. package/dist/esm/utils/projectInfo.d.ts +1 -1
  31. package/dist/esm/utils/requireResolve.js +7 -0
  32. package/package.json +1 -1
  33. package/dist/cjs/node/plugin/plugins/build/pluginAssetsManifest.js +0 -115
  34. package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest.d.ts +0 -3
  35. package/dist/esm/node/plugin/plugins/build/pluginAssetsManifest.js +0 -110
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fixServerAssets = fixServerAssets;
6
+ exports.handleAssetsManifest = handleAssetsManifest;
7
+ exports.fixServerAssets_getBuildConfig = fixServerAssets_getBuildConfig;
7
8
  exports.fixServerAssets_isEnabled = fixServerAssets_isEnabled;
8
9
  exports.fixServerAssets_assertUsageCssCodeSplit = fixServerAssets_assertUsageCssCodeSplit;
9
10
  exports.fixServerAssets_assertUsageCssTarget = fixServerAssets_assertUsageCssTarget;
@@ -20,6 +21,11 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
20
21
  const getVikeConfig_js_1 = require("../../importUserCode/v1-design/getVikeConfig.js");
21
22
  const getOutDirs_js_1 = require("../../../shared/getOutDirs.js");
22
23
  const viteIsSSR_js_1 = require("../../../shared/viteIsSSR.js");
24
+ const commonConfig_js_1 = require("../../commonConfig.js");
25
+ const pluginBuildEntry_js_1 = require("../pluginBuildEntry.js");
26
+ (0, utils_js_1.assertIsSingleModuleInstance)('build/handleAssetsManifest.ts');
27
+ let assetsJsonFilePath;
28
+ // TODO/now move isV1Design() inside fixServerAssets_isEnabled()
23
29
  /**
24
30
  * true => use workaround config.build.ssrEmitAssets
25
31
  * false => use workaround extractAssets plugin
@@ -219,13 +225,16 @@ function getHash(src) {
219
225
  }
220
226
  // https://github.com/vikejs/vike/issues/1993
221
227
  function fixServerAssets_assertUsageCssCodeSplit(config) {
228
+ const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && (0, getVikeConfig_js_1.isV1Design)(config);
229
+ if (!isServerAssetsFixEnabled)
230
+ return;
222
231
  (0, utils_js_1.assertWarning)(config.build.cssCodeSplit, `${picocolors_1.default.cyan('build.cssCodeSplit')} shouldn't be set to ${picocolors_1.default.cyan('false')} (https://github.com/vikejs/vike/issues/1993)`, { onlyOnce: true });
223
232
  }
224
233
  const targets = [];
225
- async function fixServerAssets_assertUsageCssTarget(config) {
234
+ function fixServerAssets_assertUsageCssTarget(config) {
226
235
  if (!fixServerAssets_isEnabled())
227
236
  return;
228
- if (!(await (0, getVikeConfig_js_1.isV1Design)(config)))
237
+ if (!(0, getVikeConfig_js_1.isV1Design)(config))
229
238
  return;
230
239
  const isServerSide = (0, viteIsSSR_js_1.viteIsSSR)(config);
231
240
  (0, utils_js_1.assert)(typeof isServerSide === 'boolean');
@@ -286,3 +295,45 @@ async function writeManifestFile(manifest, manifestFilePath) {
286
295
  const manifestFileContent = JSON.stringify(manifest, null, 2);
287
296
  await promises_1.default.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
288
297
  }
298
+ function fixServerAssets_getBuildConfig(config) {
299
+ const vike = (0, commonConfig_js_1.getVikeConfigPublic)(config);
300
+ const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && (0, getVikeConfig_js_1.isV1Design)(config);
301
+ return {
302
+ // https://github.com/vikejs/vike/issues/1339
303
+ ssrEmitAssets: isServerAssetsFixEnabled ? true : undefined,
304
+ // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
305
+ cssMinify: isServerAssetsFixEnabled ? 'esbuild' : undefined,
306
+ manifest: pluginBuildConfig_js_1.manifestTempFile,
307
+ copyPublicDir: vike.config.viteEnvironmentAPI
308
+ ? // Already set by vike:build:pluginBuildApp
309
+ undefined
310
+ : !(0, viteIsSSR_js_1.viteIsSSR)(config)
311
+ };
312
+ }
313
+ async function handleAssetsManifest(config, viteEnv, options, bundle) {
314
+ if ((0, viteIsSSR_js_1.viteIsSSR)(config, viteEnv)) {
315
+ (0, utils_js_1.assert)(!assetsJsonFilePath);
316
+ const outDirs = (0, getOutDirs_js_1.getOutDirs)(config, viteEnv);
317
+ assetsJsonFilePath = path_1.default.posix.join(outDirs.outDirRoot, 'assets.json');
318
+ await writeAssetsManifestFile(outDirs, assetsJsonFilePath, config);
319
+ }
320
+ if ((0, viteIsSSR_js_1.viteIsServerBuildEnvAny)(config, viteEnv)) {
321
+ (0, utils_js_1.assert)(assetsJsonFilePath);
322
+ // Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
323
+ await (0, pluginBuildEntry_js_1.set_macro_ASSETS_MANIFEST)(options, bundle, assetsJsonFilePath);
324
+ }
325
+ }
326
+ async function writeAssetsManifestFile(outDirs, assetsJsonFilePath, config) {
327
+ const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && (0, getVikeConfig_js_1.isV1Design)(config);
328
+ const clientManifestFilePath = path_1.default.posix.join(outDirs.outDirClient, pluginBuildConfig_js_1.manifestTempFile);
329
+ const serverManifestFilePath = path_1.default.posix.join(outDirs.outDirServer, pluginBuildConfig_js_1.manifestTempFile);
330
+ if (!isServerAssetsFixEnabled) {
331
+ await promises_1.default.copyFile(clientManifestFilePath, assetsJsonFilePath);
332
+ }
333
+ else {
334
+ const { clientManifestMod } = await fixServerAssets(config);
335
+ await writeManifestFile(clientManifestMod, assetsJsonFilePath);
336
+ }
337
+ await promises_1.default.rm(clientManifestFilePath);
338
+ await promises_1.default.rm(serverManifestFilePath);
339
+ }
@@ -15,6 +15,7 @@ const logErrorHint_js_1 = require("../../../runtime/renderPage/logErrorHint.js")
15
15
  const pluginBuildConfig_js_1 = require("./pluginBuildConfig.js");
16
16
  const getVikeConfig_js_1 = require("../importUserCode/v1-design/getVikeConfig.js");
17
17
  const context_js_2 = require("../../../api/context.js");
18
+ const fixServerAssets_js_1 = require("./pluginAssetsManifest/fixServerAssets.js");
18
19
  let forceExit = false;
19
20
  function pluginAutoFullBuild() {
20
21
  let config;
@@ -30,19 +31,13 @@ function pluginAutoFullBuild() {
30
31
  abortViteBuildSsr(vikeConfig);
31
32
  },
32
33
  writeBundle: {
33
- /* We can't use this because it breaks Vite's logging. TODO: try again with latest Vite version.
34
+ /* We can't use this because it breaks Vite's logging. TODO/eventually: try again with latest Vite version.
34
35
  sequential: true,
35
36
  order: 'pre',
36
37
  */
37
- async handler(_options, bundle) {
38
- try {
39
- await triggerFullBuild(config, vikeConfig, bundle);
40
- }
41
- catch (err) {
42
- // Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], for example see https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
43
- console.error(err);
44
- process.exit(1);
45
- }
38
+ async handler(options, bundle) {
39
+ await (0, fixServerAssets_js_1.handleAssetsManifest)(config, this.environment, options, bundle);
40
+ await triggerFullBuild(config, vikeConfig, bundle);
46
41
  }
47
42
  }
48
43
  },
@@ -79,6 +74,7 @@ async function triggerFullBuild(config, vikeConfig, bundle) {
79
74
  await (0, vite_1.build)(setSSR(configInline));
80
75
  }
81
76
  catch (err) {
77
+ // Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
82
78
  console.error(err);
83
79
  (0, logErrorHint_js_1.logErrorHint)(err);
84
80
  process.exit(1);
@@ -11,7 +11,7 @@ const commonConfig_js_1 = require("../commonConfig.js");
11
11
  function pluginBuildApp() {
12
12
  let config;
13
13
  // `builder.buildApp()` can be overriden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
14
- // In that case, we should'nt `forceExit`.
14
+ // In that case, we shouldn't `forceExit`.
15
15
  let forceExit = false;
16
16
  return [
17
17
  {
@@ -15,6 +15,7 @@ const getFilePath_js_1 = require("../../shared/getFilePath.js");
15
15
  const getConfigValueBuildTime_js_1 = require("../../../../shared/page-configs/getConfigValueBuildTime.js");
16
16
  const viteIsSSR_js_1 = require("../../shared/viteIsSSR.js");
17
17
  const getOutDirs_js_1 = require("../../shared/getOutDirs.js");
18
+ const fixServerAssets_js_1 = require("./pluginAssetsManifest/fixServerAssets.js");
18
19
  // @ts-ignore `file://${__filename}` is shimmed at dist/cjs by dist-cjs-fixup.js.
19
20
  const importMetaUrl = `file://${__filename}`;
20
21
  const require_ = (0, module_1.createRequire)(importMetaUrl);
@@ -37,6 +38,7 @@ function pluginBuildConfig() {
37
38
  (0, utils_js_1.assert)(Object.keys(entries).length > 0);
38
39
  config.build.rollupOptions.input = (0, utils_js_1.injectRollupInputs)(entries, config);
39
40
  addLogHook();
41
+ (0, fixServerAssets_js_1.fixServerAssets_assertUsageCssCodeSplit)(config);
40
42
  }
41
43
  },
42
44
  config: {
@@ -45,7 +47,8 @@ function pluginBuildConfig() {
45
47
  (0, utils_js_1.onSetupBuild)();
46
48
  return {
47
49
  build: {
48
- outDir: (0, getOutDirs_js_1.resolveOutDir)(config)
50
+ outDir: (0, getOutDirs_js_1.resolveOutDir)(config),
51
+ ...(0, fixServerAssets_js_1.fixServerAssets_getBuildConfig)(config)
49
52
  }
50
53
  };
51
54
  }
@@ -53,8 +56,9 @@ function pluginBuildConfig() {
53
56
  buildStart() {
54
57
  (0, utils_js_1.onSetupBuild)();
55
58
  },
56
- async closeBundle() {
59
+ closeBundle() {
57
60
  (0, utils_js_1.onSetupBuild)();
61
+ (0, fixServerAssets_js_1.fixServerAssets_assertUsageCssTarget)(config);
58
62
  }
59
63
  }
60
64
  ];
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.build = build;
4
- const pluginAssetsManifest_js_1 = require("./build/pluginAssetsManifest.js");
5
4
  const pluginBuildApp_js_1 = require("./build/pluginBuildApp.js");
6
5
  const pluginDistPackageJsonFile_js_1 = require("./build/pluginDistPackageJsonFile.js");
7
6
  const pluginSuppressRollupWarning_js_1 = require("./build/pluginSuppressRollupWarning.js");
@@ -11,7 +10,6 @@ const pluginBuildEntry_js_1 = require("./build/pluginBuildEntry.js");
11
10
  const pluginBuildConfig_js_1 = require("./build/pluginBuildConfig.js");
12
11
  function build() {
13
12
  return [
14
- ...(0, pluginAssetsManifest_js_1.pluginAssetsManifest)(),
15
13
  ...(0, pluginBuildConfig_js_1.pluginBuildConfig)(),
16
14
  ...(0, pluginBuildApp_js_1.pluginBuildApp)(),
17
15
  ...(0, pluginAutoFullBuild_js_1.pluginAutoFullBuild)(),
@@ -36,6 +36,7 @@ function commonConfig(vikeVitePluginOptions) {
36
36
  _isDev: isDev,
37
37
  _root: root,
38
38
  _vikeVitePluginOptions: vikeVitePluginOptions,
39
+ _vikeConfigObject: vikeConfig,
39
40
  _vike: {
40
41
  pages: vikeConfig.pages,
41
42
  config: vikeConfig.global.config
@@ -91,8 +91,10 @@ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doN
91
91
  }
92
92
  return await vikeConfigPromise;
93
93
  }
94
- async function isV1Design(config) {
95
- const vikeConfig = await getVikeConfig(config);
94
+ // TODO/now update all isV1Design() usage
95
+ function isV1Design(config) {
96
+ const vikeConfig = config._vikeConfigObject;
97
+ (0, utils_js_1.assert)(vikeConfig);
96
98
  const { pageConfigs } = vikeConfig;
97
99
  const isV1Design = pageConfigs.length > 0;
98
100
  return isV1Design;
@@ -9,12 +9,13 @@ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
9
  const utils_js_1 = require("../utils.js");
10
10
  const viteIsSSR_js_1 = require("./viteIsSSR.js");
11
11
  const debug = (0, utils_js_1.createDebugger)('vike:outDir');
12
- function getOutDirs(config) {
12
+ function getOutDirs(configGlobal, viteEnv) {
13
+ const configEnv = viteEnv?.config ?? configGlobal;
13
14
  debug('getOutDirs()', new Error().stack);
14
- const outDir = getOutDirFromViteResolvedConfig(config);
15
+ const outDir = getOutDirFromViteResolvedConfig(configEnv);
15
16
  if (!isOutDirRoot(outDir))
16
- assertOutDirResolved(outDir, config);
17
- const outDirs = getOutDirsAll(outDir, config.root);
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` */
@@ -1,11 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.viteIsSSR = viteIsSSR;
4
+ exports.viteIsServerBuildEnvAny = viteIsServerBuildEnvAny;
4
5
  exports.viteIsSSR_options = viteIsSSR_options;
5
6
  exports.viteIsSSR_safe = viteIsSSR_safe;
6
7
  const assert_js_1 = require("../../../utils/assert.js");
7
- function viteIsSSR(config) {
8
- return !!config?.build?.ssr;
8
+ // TODO/now: rename_full viteIsSSR isViteServerBuildEnvSsr
9
+ function viteIsSSR(configGlobal, viteEnv) {
10
+ const configEnv = viteEnv?.config ?? configGlobal;
11
+ return !!configEnv?.build?.ssr;
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);
9
16
  }
10
17
  function viteIsSSR_options(options) {
11
18
  return !!options?.ssr;
@@ -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);
@@ -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-62ca594';
5
+ exports.PROJECT_VERSION = '0.4.223-commit-f1089b4';
@@ -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)) {
@@ -1,10 +1,13 @@
1
- export { fixServerAssets };
1
+ export { handleAssetsManifest };
2
+ export { fixServerAssets_getBuildConfig };
2
3
  export { fixServerAssets_isEnabled };
3
4
  export { fixServerAssets_assertUsageCssCodeSplit };
4
5
  export { fixServerAssets_assertUsageCssTarget };
5
6
  export { writeManifestFile };
6
- import { ViteManifest } from '../../../../shared/ViteManifest.js';
7
- import { ResolvedConfig } from 'vite';
7
+ import type { ViteManifest } from '../../../../shared/ViteManifest.js';
8
+ import type { Environment, ResolvedConfig, Rollup, UserConfig } from 'vite';
9
+ type Bundle = Rollup.OutputBundle;
10
+ type Options = Rollup.NormalizedOutputOptions;
8
11
  /**
9
12
  * true => use workaround config.build.ssrEmitAssets
10
13
  * false => use workaround extractAssets plugin
@@ -12,11 +15,13 @@ import { ResolvedConfig } from 'vite';
12
15
  * Only used by V1 design.
13
16
  */
14
17
  declare function fixServerAssets_isEnabled(): boolean;
15
- /** https://github.com/vikejs/vike/issues/1339 */
16
- declare function fixServerAssets(config: ResolvedConfig): Promise<{
17
- clientManifestMod: ViteManifest;
18
- serverManifestMod: ViteManifest;
19
- }>;
20
18
  declare function fixServerAssets_assertUsageCssCodeSplit(config: ResolvedConfig): void;
21
- declare function fixServerAssets_assertUsageCssTarget(config: ResolvedConfig): Promise<void>;
19
+ declare function fixServerAssets_assertUsageCssTarget(config: ResolvedConfig): void;
22
20
  declare function writeManifestFile(manifest: ViteManifest, manifestFilePath: string): Promise<void>;
21
+ declare function fixServerAssets_getBuildConfig(config: UserConfig): {
22
+ readonly ssrEmitAssets: true | undefined;
23
+ readonly cssMinify: "esbuild" | undefined;
24
+ readonly manifest: "_temp_manifest.json";
25
+ readonly copyPublicDir: boolean | undefined;
26
+ };
27
+ declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment | undefined, options: Options, bundle: Bundle): Promise<void>;
@@ -1,4 +1,7 @@
1
- export { fixServerAssets };
1
+ // TODO/now: move this file
2
+ // TODO/now: rename_full fixServerAssets handleAssetsManifest
3
+ export { handleAssetsManifest };
4
+ export { fixServerAssets_getBuildConfig };
2
5
  export { fixServerAssets_isEnabled };
3
6
  export { fixServerAssets_assertUsageCssCodeSplit };
4
7
  export { fixServerAssets_assertUsageCssTarget };
@@ -7,14 +10,19 @@ import fs from 'fs/promises';
7
10
  import fs_sync from 'fs';
8
11
  import path from 'path';
9
12
  import { existsSync } from 'fs';
10
- import { assert, assertWarning, isEqualStringList, isObject, pLimit, unique } from '../../../utils.js';
13
+ import { assert, assertIsSingleModuleInstance, assertWarning, isEqualStringList, isObject, pLimit, unique } from '../../../utils.js';
11
14
  import { isVirtualFileIdPageConfigValuesAll } from '../../../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
12
15
  import { manifestTempFile } from '../pluginBuildConfig.js';
13
16
  import { getAssetsDir } from '../../../shared/getAssetsDir.js';
14
17
  import pc from '@brillout/picocolors';
15
18
  import { isV1Design } from '../../importUserCode/v1-design/getVikeConfig.js';
16
19
  import { getOutDirs } from '../../../shared/getOutDirs.js';
17
- import { viteIsSSR } from '../../../shared/viteIsSSR.js';
20
+ import { viteIsServerBuildEnvAny, viteIsSSR } from '../../../shared/viteIsSSR.js';
21
+ import { getVikeConfigPublic } from '../../commonConfig.js';
22
+ import { set_macro_ASSETS_MANIFEST } from '../pluginBuildEntry.js';
23
+ assertIsSingleModuleInstance('build/handleAssetsManifest.ts');
24
+ let assetsJsonFilePath;
25
+ // TODO/now move isV1Design() inside fixServerAssets_isEnabled()
18
26
  /**
19
27
  * true => use workaround config.build.ssrEmitAssets
20
28
  * false => use workaround extractAssets plugin
@@ -214,13 +222,16 @@ function getHash(src) {
214
222
  }
215
223
  // https://github.com/vikejs/vike/issues/1993
216
224
  function fixServerAssets_assertUsageCssCodeSplit(config) {
225
+ const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && isV1Design(config);
226
+ if (!isServerAssetsFixEnabled)
227
+ return;
217
228
  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
229
  }
219
230
  const targets = [];
220
- async function fixServerAssets_assertUsageCssTarget(config) {
231
+ function fixServerAssets_assertUsageCssTarget(config) {
221
232
  if (!fixServerAssets_isEnabled())
222
233
  return;
223
- if (!(await isV1Design(config)))
234
+ if (!isV1Design(config))
224
235
  return;
225
236
  const isServerSide = viteIsSSR(config);
226
237
  assert(typeof isServerSide === 'boolean');
@@ -281,3 +292,45 @@ async function writeManifestFile(manifest, manifestFilePath) {
281
292
  const manifestFileContent = JSON.stringify(manifest, null, 2);
282
293
  await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
283
294
  }
295
+ function fixServerAssets_getBuildConfig(config) {
296
+ const vike = getVikeConfigPublic(config);
297
+ const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && isV1Design(config);
298
+ return {
299
+ // https://github.com/vikejs/vike/issues/1339
300
+ ssrEmitAssets: isServerAssetsFixEnabled ? true : undefined,
301
+ // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
302
+ cssMinify: isServerAssetsFixEnabled ? 'esbuild' : undefined,
303
+ manifest: manifestTempFile,
304
+ copyPublicDir: vike.config.viteEnvironmentAPI
305
+ ? // Already set by vike:build:pluginBuildApp
306
+ undefined
307
+ : !viteIsSSR(config)
308
+ };
309
+ }
310
+ async function handleAssetsManifest(config, viteEnv, options, bundle) {
311
+ if (viteIsSSR(config, viteEnv)) {
312
+ assert(!assetsJsonFilePath);
313
+ const outDirs = getOutDirs(config, viteEnv);
314
+ assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
315
+ await writeAssetsManifestFile(outDirs, assetsJsonFilePath, config);
316
+ }
317
+ if (viteIsServerBuildEnvAny(config, viteEnv)) {
318
+ assert(assetsJsonFilePath);
319
+ // Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
320
+ await set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath);
321
+ }
322
+ }
323
+ async function writeAssetsManifestFile(outDirs, assetsJsonFilePath, config) {
324
+ const isServerAssetsFixEnabled = fixServerAssets_isEnabled() && isV1Design(config);
325
+ const clientManifestFilePath = path.posix.join(outDirs.outDirClient, manifestTempFile);
326
+ const serverManifestFilePath = path.posix.join(outDirs.outDirServer, manifestTempFile);
327
+ if (!isServerAssetsFixEnabled) {
328
+ await fs.copyFile(clientManifestFilePath, assetsJsonFilePath);
329
+ }
330
+ else {
331
+ const { clientManifestMod } = await fixServerAssets(config);
332
+ await writeManifestFile(clientManifestMod, assetsJsonFilePath);
333
+ }
334
+ await fs.rm(clientManifestFilePath);
335
+ await fs.rm(serverManifestFilePath);
336
+ }
@@ -10,6 +10,7 @@ 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
14
  let forceExit = false;
14
15
  function pluginAutoFullBuild() {
15
16
  let config;
@@ -25,19 +26,13 @@ function pluginAutoFullBuild() {
25
26
  abortViteBuildSsr(vikeConfig);
26
27
  },
27
28
  writeBundle: {
28
- /* We can't use this because it breaks Vite's logging. TODO: try again with latest Vite version.
29
+ /* We can't use this because it breaks Vite's logging. TODO/eventually: try again with latest Vite version.
29
30
  sequential: true,
30
31
  order: 'pre',
31
32
  */
32
- async handler(_options, bundle) {
33
- try {
34
- await triggerFullBuild(config, vikeConfig, bundle);
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
- }
33
+ async handler(options, bundle) {
34
+ await handleAssetsManifest(config, this.environment, options, bundle);
35
+ await triggerFullBuild(config, vikeConfig, bundle);
41
36
  }
42
37
  }
43
38
  },
@@ -74,6 +69,7 @@ async function triggerFullBuild(config, vikeConfig, bundle) {
74
69
  await build(setSSR(configInline));
75
70
  }
76
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
77
73
  console.error(err);
78
74
  logErrorHint(err);
79
75
  process.exit(1);
@@ -9,7 +9,7 @@ import { getVikeConfigPublic } from '../commonConfig.js';
9
9
  function pluginBuildApp() {
10
10
  let config;
11
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`.
12
+ // In that case, we shouldn't `forceExit`.
13
13
  let forceExit = false;
14
14
  return [
15
15
  {
@@ -13,6 +13,7 @@ import { getFilePathResolved } from '../../shared/getFilePath.js';
13
13
  import { getConfigValueBuildTime } from '../../../../shared/page-configs/getConfigValueBuildTime.js';
14
14
  import { viteIsSSR } from '../../shared/viteIsSSR.js';
15
15
  import { resolveOutDir } from '../../shared/getOutDirs.js';
16
+ import { fixServerAssets_assertUsageCssCodeSplit, fixServerAssets_assertUsageCssTarget, fixServerAssets_getBuildConfig } from './pluginAssetsManifest/fixServerAssets.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
+ fixServerAssets_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
+ ...fixServerAssets_getBuildConfig(config)
46
49
  }
47
50
  };
48
51
  }
@@ -50,8 +53,9 @@ function pluginBuildConfig() {
50
53
  buildStart() {
51
54
  onSetupBuild();
52
55
  },
53
- async closeBundle() {
56
+ closeBundle() {
54
57
  onSetupBuild();
58
+ fixServerAssets_assertUsageCssTarget(config);
55
59
  }
56
60
  }
57
61
  ];
@@ -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(),
@@ -11,6 +11,7 @@ declare module 'vite' {
11
11
  _baseViteOriginal?: string;
12
12
  _viteConfigEnhanced?: InlineConfig;
13
13
  _vike?: VikeConfigPublic;
14
+ _vikeConfigObject?: VikeConfigObject;
14
15
  }
15
16
  }
16
17
  type VikeConfigPublic = {
@@ -31,6 +31,7 @@ function commonConfig(vikeVitePluginOptions) {
31
31
  _isDev: isDev,
32
32
  _root: root,
33
33
  _vikeVitePluginOptions: vikeVitePluginOptions,
34
+ _vikeConfigObject: vikeConfig,
34
35
  _vike: {
35
36
  pages: vikeConfig.pages,
36
37
  config: vikeConfig.global.config
@@ -8,7 +8,7 @@ export { getConfigDefinitionOptional };
8
8
  export type { VikeConfigObject };
9
9
  import type { PageConfigGlobalBuildTime, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
10
10
  import { type ConfigDefinitions, type ConfigDefinitionInternal } from './getVikeConfig/configDefinitionsBuiltIn.js';
11
- import type { ResolvedConfig } from 'vite';
11
+ import type { ResolvedConfig, UserConfig } from 'vite';
12
12
  import { type PageConfigUserFriendly, type PageConfigsUserFriendly } from '../../../../../shared/page-configs/getPageConfigUserFriendly.js';
13
13
  import { type PlusFile } from './getVikeConfig/getPlusFilesAll.js';
14
14
  type VikeConfigObject = {
@@ -23,7 +23,7 @@ declare function getVikeConfig(config: ResolvedConfig, { doNotRestartViteOnError
23
23
  doNotRestartViteOnError?: true;
24
24
  }): Promise<VikeConfigObject>;
25
25
  declare function getVikeConfig2(userRootDir: string, isDev: boolean, vikeVitePluginOptions: unknown): Promise<VikeConfigObject>;
26
- declare function isV1Design(config: ResolvedConfig): Promise<boolean>;
26
+ declare function isV1Design(config: ResolvedConfig | UserConfig): boolean;
27
27
  declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitions, configName: string): ConfigDefinitionInternal | null;
28
28
  declare function getConfVal(plusFile: PlusFile, configName: string): null | {
29
29
  value: unknown;
@@ -85,8 +85,10 @@ async function getVikeConfigEntry(userRootDir, isDev, vikeVitePluginOptions, doN
85
85
  }
86
86
  return await vikeConfigPromise;
87
87
  }
88
- async function isV1Design(config) {
89
- const vikeConfig = await getVikeConfig(config);
88
+ // TODO/now update all isV1Design() usage
89
+ function isV1Design(config) {
90
+ const vikeConfig = config._vikeConfigObject;
91
+ assert(vikeConfig);
90
92
  const { pageConfigs } = vikeConfig;
91
93
  const isV1Design = pageConfigs.length > 0;
92
94
  return isV1Design;
@@ -1,7 +1,7 @@
1
1
  export { getOutDirs };
2
2
  export { resolveOutDir };
3
3
  export type { OutDirs };
4
- import type { UserConfig, ResolvedConfig } from 'vite';
4
+ import type { UserConfig, ResolvedConfig, Environment } from 'vite';
5
5
  type OutDirs = {
6
6
  /** Absolute path to `outDir` */
7
7
  outDirRoot: string;
@@ -10,6 +10,6 @@ type OutDirs = {
10
10
  /** Absolute path to `${outDir}/server` */
11
11
  outDirServer: string;
12
12
  };
13
- declare function getOutDirs(config: ResolvedConfig): OutDirs;
13
+ declare function getOutDirs(configGlobal: ResolvedConfig, viteEnv?: Environment): OutDirs;
14
14
  /** Appends `client/` or `server/` to `config.build.outDir` */
15
15
  declare function resolveOutDir(config: UserConfig, isSSR?: true): string;
@@ -4,12 +4,13 @@ import pc from '@brillout/picocolors';
4
4
  import { assert, assertPosixPath, assertUsage, createDebugger, pathJoin, toPosixPath } from '../utils.js';
5
5
  import { viteIsSSR } from './viteIsSSR.js';
6
6
  const debug = createDebugger('vike:outDir');
7
- function getOutDirs(config) {
7
+ function getOutDirs(configGlobal, viteEnv) {
8
+ const configEnv = viteEnv?.config ?? configGlobal;
8
9
  debug('getOutDirs()', new Error().stack);
9
- const outDir = getOutDirFromViteResolvedConfig(config);
10
+ const outDir = getOutDirFromViteResolvedConfig(configEnv);
10
11
  if (!isOutDirRoot(outDir))
11
- assertOutDirResolved(outDir, config);
12
- const outDirs = getOutDirsAll(outDir, config.root);
12
+ assertOutDirResolved(outDir, configEnv);
13
+ const outDirs = getOutDirsAll(outDir, configEnv.root);
13
14
  return outDirs;
14
15
  }
15
16
  /** Appends `client/` or `server/` to `config.build.outDir` */
@@ -1,8 +1,10 @@
1
1
  export { viteIsSSR };
2
+ export { viteIsServerBuildEnvAny };
2
3
  export { viteIsSSR_options };
3
4
  export { viteIsSSR_safe };
4
- import type { ResolvedConfig, UserConfig } from 'vite';
5
- declare function viteIsSSR(config: ResolvedConfig | UserConfig): boolean;
5
+ import type { Environment, ResolvedConfig, UserConfig } from 'vite';
6
+ declare function viteIsSSR(configGlobal: ResolvedConfig | UserConfig, viteEnv?: Environment): boolean;
7
+ declare function viteIsServerBuildEnvAny(configGlobal: ResolvedConfig, viteEnv: Environment | undefined): boolean;
6
8
  declare function viteIsSSR_options(options: {
7
9
  ssr?: boolean;
8
10
  } | undefined): boolean;
@@ -1,9 +1,16 @@
1
1
  export { viteIsSSR };
2
+ export { viteIsServerBuildEnvAny };
2
3
  export { viteIsSSR_options };
3
4
  export { viteIsSSR_safe };
4
5
  import { assert } from '../../../utils/assert.js';
5
- function viteIsSSR(config) {
6
- return !!config?.build?.ssr;
6
+ // TODO/now: rename_full viteIsSSR isViteServerBuildEnvSsr
7
+ function viteIsSSR(configGlobal, viteEnv) {
8
+ const configEnv = viteEnv?.config ?? configGlobal;
9
+ return !!configEnv?.build?.ssr;
10
+ }
11
+ // All server-side environments: not only `ssr` but, for example, also `vercel_edge` and `vercel_node`.
12
+ function viteIsServerBuildEnvAny(configGlobal, viteEnv) {
13
+ return viteEnv ? viteEnv.name === 'ssr' : viteIsSSR(configGlobal);
7
14
  }
8
15
  function viteIsSSR_options(options) {
9
16
  return !!options?.ssr;
@@ -57,6 +57,7 @@ async function runPrerenderFromAutoRun(viteConfig, config) {
57
57
  prerenderContextPublic = ret.prerenderContextPublic;
58
58
  }
59
59
  catch (err) {
60
+ // Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
60
61
  console.error(err);
61
62
  logErrorHint(err);
62
63
  process.exit(1);
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.223-commit-62ca594";
1
+ export declare const PROJECT_VERSION: "0.4.223-commit-f1089b4";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.223-commit-62ca594';
2
+ export const PROJECT_VERSION = '0.4.223-commit-f1089b4';
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.223-commit-62ca594";
3
+ projectVersion: "0.4.223-commit-f1089b4";
4
4
  };
@@ -32,6 +32,13 @@ function requireResolve(importPath, cwd) {
32
32
  return importedFile;
33
33
  }
34
34
  function removeFileExtention(importPath) {
35
+ // Skip for Bun: https://github.com/vikejs/vike/issues/2204
36
+ //@ts-ignore
37
+ if (typeof Bun !== 'undefined') {
38
+ // https://bun.sh/guides/util/detect-bun
39
+ assert(process.versions.bun);
40
+ return importPath;
41
+ }
35
42
  for (const ext of scriptFileExtensionList) {
36
43
  const suffix = `.${ext}`;
37
44
  if (importPath.endsWith(suffix)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.223-commit-62ca594",
3
+ "version": "0.4.223-commit-f1089b4",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -1,115 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.pluginAssetsManifest = pluginAssetsManifest;
7
- const getVikeConfig_js_1 = require("../importUserCode/v1-design/getVikeConfig.js");
8
- const promises_1 = __importDefault(require("fs/promises"));
9
- const path_1 = __importDefault(require("path"));
10
- const fixServerAssets_js_1 = require("../build/pluginAssetsManifest/fixServerAssets.js");
11
- const pluginBuildEntry_js_1 = require("./pluginBuildEntry.js");
12
- const getOutDirs_js_1 = require("../../shared/getOutDirs.js");
13
- const viteIsSSR_js_1 = require("../../shared/viteIsSSR.js");
14
- const commonConfig_js_1 = require("../commonConfig.js");
15
- const manifestTempFile = '_temp_manifest.json';
16
- function pluginAssetsManifest() {
17
- let isServerAssetsFixEnabled;
18
- let config;
19
- let assetsJsonFilePath;
20
- return [
21
- {
22
- name: 'vike:build:pluginAssetsManifest:post',
23
- apply: 'build',
24
- enforce: 'post',
25
- configResolved: {
26
- order: 'post',
27
- async handler(config_) {
28
- config = config_;
29
- isServerAssetsFixEnabled = (0, fixServerAssets_js_1.fixServerAssets_isEnabled)() && (await (0, getVikeConfig_js_1.isV1Design)(config));
30
- if (isServerAssetsFixEnabled) {
31
- // https://github.com/vikejs/vike/issues/1339
32
- config.build.ssrEmitAssets = true;
33
- // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
34
- config.build.cssMinify = 'esbuild';
35
- (0, fixServerAssets_js_1.fixServerAssets_assertUsageCssCodeSplit)(config);
36
- }
37
- }
38
- },
39
- config: {
40
- order: 'post',
41
- handler(config) {
42
- const vike = (0, commonConfig_js_1.getVikeConfigPublic)(config);
43
- return {
44
- build: {
45
- manifest: manifestTempFile,
46
- copyPublicDir: vike.config.viteEnvironmentAPI
47
- ? // Already set by vike:build:pluginBuildApp
48
- undefined
49
- : !(0, viteIsSSR_js_1.viteIsSSR)(config)
50
- }
51
- };
52
- }
53
- },
54
- async closeBundle() {
55
- await (0, fixServerAssets_js_1.fixServerAssets_assertUsageCssTarget)(config);
56
- }
57
- },
58
- {
59
- name: 'vike:build:pluginAssetsManifest:pre',
60
- apply: 'build',
61
- // Compatiblity with Environment API. It replaces `vike:build:pluginAssetsManifest:pre` when compatible
62
- // See https://vite.dev/guide/api-environment-plugins.html#per-environment-plugins
63
- applyToEnvironment() {
64
- return {
65
- name: 'vike:build:pluginAssetsManifest:pre:env-api-compat',
66
- apply: 'build',
67
- enforce: 'pre',
68
- writeBundle: {
69
- order: 'pre',
70
- sequential: true,
71
- async handler(options, bundle) {
72
- if (this.environment.name === 'ssr') {
73
- await writeAssetsManifestFile((0, getOutDirs_js_1.getOutDirs)(this.environment.config));
74
- }
75
- if ((0, viteIsSSR_js_1.viteIsSSR)(this.environment.config)) {
76
- // Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
77
- await (0, pluginBuildEntry_js_1.set_macro_ASSETS_MANIFEST)(options, bundle, assetsJsonFilePath);
78
- }
79
- }
80
- }
81
- };
82
- },
83
- // Ensures that we can reuse `assetsJsonFilePath`
84
- sharedDuringBuild: true,
85
- // Make sure other writeBundle() hooks are called after this writeBundle() hook.
86
- // - set_macro_ASSETS_MANIFEST() needs to be called before dist/server/ code is executed.
87
- // - For example, the writeBundle() hook of vite-plugin-vercel needs to be called after this writeBundle() hook, otherwise: https://github.com/vikejs/vike/issues/1527
88
- enforce: 'pre',
89
- writeBundle: {
90
- order: 'pre',
91
- sequential: true,
92
- async handler(options, bundle) {
93
- if ((0, viteIsSSR_js_1.viteIsSSR)(config)) {
94
- await writeAssetsManifestFile((0, getOutDirs_js_1.getOutDirs)(config));
95
- await (0, pluginBuildEntry_js_1.set_macro_ASSETS_MANIFEST)(options, bundle, assetsJsonFilePath);
96
- }
97
- }
98
- }
99
- }
100
- ];
101
- async function writeAssetsManifestFile(outDirs) {
102
- assetsJsonFilePath = path_1.default.posix.join(outDirs.outDirRoot, 'assets.json');
103
- const clientManifestFilePath = path_1.default.posix.join(outDirs.outDirClient, manifestTempFile);
104
- const serverManifestFilePath = path_1.default.posix.join(outDirs.outDirServer, manifestTempFile);
105
- if (!isServerAssetsFixEnabled) {
106
- await promises_1.default.copyFile(clientManifestFilePath, assetsJsonFilePath);
107
- }
108
- else {
109
- const { clientManifestMod } = await (0, fixServerAssets_js_1.fixServerAssets)(config);
110
- await (0, fixServerAssets_js_1.writeManifestFile)(clientManifestMod, assetsJsonFilePath);
111
- }
112
- await promises_1.default.rm(clientManifestFilePath);
113
- await promises_1.default.rm(serverManifestFilePath);
114
- }
115
- }
@@ -1,3 +0,0 @@
1
- export { pluginAssetsManifest };
2
- import type { Plugin } from 'vite';
3
- declare function pluginAssetsManifest(): Plugin[];
@@ -1,110 +0,0 @@
1
- export { pluginAssetsManifest };
2
- import { isV1Design } from '../importUserCode/v1-design/getVikeConfig.js';
3
- import fs from 'fs/promises';
4
- import path from 'path';
5
- import { fixServerAssets, fixServerAssets_assertUsageCssCodeSplit, fixServerAssets_assertUsageCssTarget, fixServerAssets_isEnabled, writeManifestFile } from '../build/pluginAssetsManifest/fixServerAssets.js';
6
- import { set_macro_ASSETS_MANIFEST } from './pluginBuildEntry.js';
7
- import { getOutDirs } from '../../shared/getOutDirs.js';
8
- import { viteIsSSR } from '../../shared/viteIsSSR.js';
9
- import { getVikeConfigPublic } from '../commonConfig.js';
10
- const manifestTempFile = '_temp_manifest.json';
11
- function pluginAssetsManifest() {
12
- let isServerAssetsFixEnabled;
13
- let config;
14
- let assetsJsonFilePath;
15
- return [
16
- {
17
- name: 'vike:build:pluginAssetsManifest:post',
18
- apply: 'build',
19
- enforce: 'post',
20
- configResolved: {
21
- order: 'post',
22
- async handler(config_) {
23
- config = config_;
24
- isServerAssetsFixEnabled = fixServerAssets_isEnabled() && (await isV1Design(config));
25
- if (isServerAssetsFixEnabled) {
26
- // https://github.com/vikejs/vike/issues/1339
27
- config.build.ssrEmitAssets = true;
28
- // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
29
- config.build.cssMinify = 'esbuild';
30
- fixServerAssets_assertUsageCssCodeSplit(config);
31
- }
32
- }
33
- },
34
- config: {
35
- order: 'post',
36
- handler(config) {
37
- const vike = getVikeConfigPublic(config);
38
- return {
39
- build: {
40
- manifest: manifestTempFile,
41
- copyPublicDir: vike.config.viteEnvironmentAPI
42
- ? // Already set by vike:build:pluginBuildApp
43
- undefined
44
- : !viteIsSSR(config)
45
- }
46
- };
47
- }
48
- },
49
- async closeBundle() {
50
- await fixServerAssets_assertUsageCssTarget(config);
51
- }
52
- },
53
- {
54
- name: 'vike:build:pluginAssetsManifest:pre',
55
- apply: 'build',
56
- // Compatiblity with Environment API. It replaces `vike:build:pluginAssetsManifest:pre` when compatible
57
- // See https://vite.dev/guide/api-environment-plugins.html#per-environment-plugins
58
- applyToEnvironment() {
59
- return {
60
- name: 'vike:build:pluginAssetsManifest:pre:env-api-compat',
61
- apply: 'build',
62
- enforce: 'pre',
63
- writeBundle: {
64
- order: 'pre',
65
- sequential: true,
66
- async handler(options, bundle) {
67
- if (this.environment.name === 'ssr') {
68
- await writeAssetsManifestFile(getOutDirs(this.environment.config));
69
- }
70
- if (viteIsSSR(this.environment.config)) {
71
- // Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
72
- await set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath);
73
- }
74
- }
75
- }
76
- };
77
- },
78
- // Ensures that we can reuse `assetsJsonFilePath`
79
- sharedDuringBuild: true,
80
- // Make sure other writeBundle() hooks are called after this writeBundle() hook.
81
- // - set_macro_ASSETS_MANIFEST() needs to be called before dist/server/ code is executed.
82
- // - For example, the writeBundle() hook of vite-plugin-vercel needs to be called after this writeBundle() hook, otherwise: https://github.com/vikejs/vike/issues/1527
83
- enforce: 'pre',
84
- writeBundle: {
85
- order: 'pre',
86
- sequential: true,
87
- async handler(options, bundle) {
88
- if (viteIsSSR(config)) {
89
- await writeAssetsManifestFile(getOutDirs(config));
90
- await set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath);
91
- }
92
- }
93
- }
94
- }
95
- ];
96
- async function writeAssetsManifestFile(outDirs) {
97
- assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
98
- const clientManifestFilePath = path.posix.join(outDirs.outDirClient, manifestTempFile);
99
- const serverManifestFilePath = path.posix.join(outDirs.outDirServer, manifestTempFile);
100
- if (!isServerAssetsFixEnabled) {
101
- await fs.copyFile(clientManifestFilePath, assetsJsonFilePath);
102
- }
103
- else {
104
- const { clientManifestMod } = await fixServerAssets(config);
105
- await writeManifestFile(clientManifestMod, assetsJsonFilePath);
106
- }
107
- await fs.rm(clientManifestFilePath);
108
- await fs.rm(serverManifestFilePath);
109
- }
110
- }