vike 0.4.223 → 0.4.224-commit-f0d0f8a

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 (173) hide show
  1. package/dist/cjs/node/api/build.js +4 -37
  2. package/dist/cjs/node/api/prepareViteApiCall.js +9 -3
  3. package/dist/cjs/node/plugin/index.js +8 -20
  4. package/dist/cjs/node/plugin/plugins/baseUrls.js +3 -1
  5. package/dist/cjs/node/plugin/plugins/{buildConfig/fixServerAssets.js → build/handleAssetsManifest.js} +130 -52
  6. package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +145 -0
  7. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +52 -0
  8. package/dist/cjs/node/plugin/plugins/{buildConfig.js → build/pluginBuildConfig.js} +22 -84
  9. package/dist/cjs/node/plugin/plugins/{buildEntry/index.js → build/pluginBuildEntry.js} +9 -9
  10. package/dist/cjs/node/plugin/plugins/{distFileNames.js → build/pluginDistFileNames.js} +7 -7
  11. package/dist/cjs/node/plugin/plugins/{packageJsonFile.js → build/pluginDistPackageJsonFile.js} +6 -6
  12. package/dist/cjs/node/plugin/plugins/{suppressRollupWarning.js → build/pluginSuppressRollupWarning.js} +3 -3
  13. package/dist/cjs/node/plugin/plugins/build.js +21 -0
  14. package/dist/cjs/node/plugin/plugins/commonConfig.js +22 -4
  15. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  17. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  18. package/dist/cjs/node/plugin/plugins/envVars.js +2 -2
  19. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +9 -9
  20. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  21. package/dist/cjs/node/plugin/plugins/fileEnv.js +5 -2
  22. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  23. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +2 -5
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +5 -5
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +7 -2
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +16 -0
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +50 -64
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +2 -1
  29. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +3 -3
  30. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +19 -7
  31. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +277 -212
  32. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  33. package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
  34. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
  35. package/dist/cjs/node/plugin/shared/findPageFiles.js +3 -3
  36. package/dist/cjs/node/plugin/shared/getOutDirs.js +8 -7
  37. package/dist/cjs/node/plugin/shared/isViteServerBuild.js +47 -0
  38. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  39. package/dist/cjs/node/plugin/utils.js +1 -0
  40. package/dist/cjs/node/prerender/context.js +3 -8
  41. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +30 -21
  42. package/dist/cjs/node/prerender/runPrerender.js +28 -30
  43. package/dist/cjs/node/prerender/utils.js +1 -0
  44. package/dist/cjs/node/runtime/html/stream.js +7 -0
  45. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +13 -2
  46. package/dist/cjs/shared/getPageContextUrlComputed.js +1 -1
  47. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +2 -5
  48. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +3 -1
  49. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +20 -9
  50. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  51. package/dist/cjs/utils/debug.js +2 -1
  52. package/dist/cjs/utils/findFile.js +1 -1
  53. package/dist/cjs/utils/findPackageJson.js +1 -1
  54. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +10 -4
  55. package/dist/cjs/utils/path.js +1 -0
  56. package/dist/cjs/utils/requireResolve.js +11 -4
  57. package/dist/cjs/utils/sorter.js +0 -3
  58. package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
  59. package/dist/esm/client/client-routing-runtime/index.js +1 -0
  60. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
  61. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +10 -1
  62. package/dist/esm/node/api/build.js +4 -4
  63. package/dist/esm/node/api/prepareViteApiCall.js +9 -3
  64. package/dist/esm/node/plugin/index.d.ts +2 -1
  65. package/dist/esm/node/plugin/index.js +4 -17
  66. package/dist/esm/node/plugin/plugins/baseUrls.js +3 -1
  67. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.d.ts +18 -0
  68. package/dist/esm/node/plugin/plugins/{buildConfig/fixServerAssets.js → build/handleAssetsManifest.js} +131 -53
  69. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.d.ts +5 -0
  70. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +140 -0
  71. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.d.ts +3 -0
  72. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +50 -0
  73. package/dist/esm/node/plugin/plugins/{buildConfig.d.ts → build/pluginBuildConfig.d.ts} +3 -3
  74. package/dist/esm/node/plugin/plugins/{buildConfig.js → build/pluginBuildConfig.js} +22 -81
  75. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +7 -0
  76. package/dist/esm/node/plugin/plugins/{buildEntry/index.js → build/pluginBuildEntry.js} +9 -9
  77. package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.d.ts +3 -0
  78. package/dist/esm/node/plugin/plugins/{distFileNames.js → build/pluginDistFileNames.js} +7 -7
  79. package/dist/esm/node/plugin/plugins/build/pluginDistPackageJsonFile.d.ts +3 -0
  80. package/dist/esm/node/plugin/plugins/{packageJsonFile.js → build/pluginDistPackageJsonFile.js} +7 -6
  81. package/dist/esm/node/plugin/plugins/build/pluginSuppressRollupWarning.d.ts +3 -0
  82. package/dist/esm/node/plugin/plugins/{suppressRollupWarning.js → build/pluginSuppressRollupWarning.js} +3 -3
  83. package/dist/esm/node/plugin/plugins/build.d.ts +3 -0
  84. package/dist/esm/node/plugin/plugins/build.js +19 -0
  85. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +16 -6
  86. package/dist/esm/node/plugin/plugins/commonConfig.js +22 -4
  87. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -1
  88. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  89. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  90. package/dist/esm/node/plugin/plugins/envVars.js +2 -2
  91. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +10 -10
  92. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  93. package/dist/esm/node/plugin/plugins/fileEnv.js +5 -2
  94. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  95. package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -5
  96. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +5 -5
  97. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +7 -2
  98. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -0
  99. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +13 -0
  100. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  101. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +50 -64
  102. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +2 -1
  103. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +3 -3
  104. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +0 -1
  105. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +20 -8
  106. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +8 -6
  107. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +279 -214
  108. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  109. package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
  110. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
  111. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
  112. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
  113. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +1 -3
  114. package/dist/esm/node/plugin/shared/getOutDirs.d.ts +2 -2
  115. package/dist/esm/node/plugin/shared/getOutDirs.js +8 -7
  116. package/dist/esm/node/plugin/shared/isViteServerBuild.d.ts +15 -0
  117. package/dist/esm/node/plugin/shared/isViteServerBuild.js +45 -0
  118. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  119. package/dist/esm/node/plugin/utils.d.ts +1 -0
  120. package/dist/esm/node/plugin/utils.js +1 -0
  121. package/dist/esm/node/prerender/context.d.ts +0 -2
  122. package/dist/esm/node/prerender/context.js +4 -9
  123. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +11 -6
  124. package/dist/esm/node/prerender/resolvePrerenderConfig.js +31 -22
  125. package/dist/esm/node/prerender/runPrerender.d.ts +7 -25
  126. package/dist/esm/node/prerender/runPrerender.js +29 -31
  127. package/dist/esm/node/prerender/utils.d.ts +1 -0
  128. package/dist/esm/node/prerender/utils.js +1 -0
  129. package/dist/esm/node/runtime/globalContext.d.ts +3 -2
  130. package/dist/esm/node/runtime/html/stream.js +7 -0
  131. package/dist/esm/node/runtime/renderPage/logErrorHint.js +13 -2
  132. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +165 -5
  133. package/dist/esm/shared/getPageContextUrlComputed.js +1 -1
  134. package/dist/esm/shared/page-configs/Config.d.ts +12 -2
  135. package/dist/esm/shared/page-configs/PageConfig.d.ts +5 -5
  136. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +2 -5
  137. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +3 -1
  138. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
  139. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +20 -9
  140. package/dist/esm/types/index.d.ts +2 -0
  141. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  142. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  143. package/dist/esm/utils/debug.js +2 -1
  144. package/dist/esm/utils/findFile.js +1 -1
  145. package/dist/esm/utils/findPackageJson.js +1 -1
  146. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +8 -2
  147. package/dist/esm/utils/path.js +1 -0
  148. package/dist/esm/utils/projectInfo.d.ts +1 -1
  149. package/dist/esm/utils/requireResolve.js +11 -4
  150. package/dist/esm/utils/sorter.d.ts +18 -5
  151. package/dist/esm/utils/sorter.js +0 -3
  152. package/package.json +9 -16
  153. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +0 -119
  154. package/dist/cjs/node/plugin/plugins/buildApp.js +0 -76
  155. package/dist/cjs/node/plugin/plugins/removeRequireHookPlugin.js +0 -17
  156. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +0 -20
  157. package/dist/cjs/node/plugin/shared/viteIsSSR.js +0 -31
  158. package/dist/esm/node/plugin/plugins/autoFullBuild.d.ts +0 -3
  159. package/dist/esm/node/plugin/plugins/autoFullBuild.js +0 -114
  160. package/dist/esm/node/plugin/plugins/buildApp.d.ts +0 -3
  161. package/dist/esm/node/plugin/plugins/buildApp.js +0 -74
  162. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -20
  163. package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +0 -8
  164. package/dist/esm/node/plugin/plugins/distFileNames.d.ts +0 -3
  165. package/dist/esm/node/plugin/plugins/packageJsonFile.d.ts +0 -3
  166. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.d.ts +0 -3
  167. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.js +0 -15
  168. package/dist/esm/node/plugin/plugins/suppressRollupWarning.d.ts +0 -3
  169. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +0 -2
  170. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +0 -17
  171. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +0 -11
  172. package/dist/esm/node/plugin/shared/viteIsSSR.js +0 -29
  173. package/dist-cjs-fixup.mjs +0 -41
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -50,13 +17,13 @@ const utils_js_1 = require("./utils.js");
50
17
  */
51
18
  async function build(options = {}) {
52
19
  const { viteConfigEnhanced, vikeConfig } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options.viteConfig, 'build');
53
- // Pass it to autoFullBuild()
20
+ // Pass it to pluginAutoFullBuild()
54
21
  if (viteConfigEnhanced)
55
22
  viteConfigEnhanced._viteConfigEnhanced = viteConfigEnhanced;
56
- if (vikeConfig.global.config.viteEnvironmentAPI) {
23
+ if (vikeConfig.global.config.vite6BuilderApp) {
57
24
  (0, utils_js_1.assertVersion)('Vite', vite_1.version, '6.0.0');
58
- const { createBuilder } = await Promise.resolve().then(() => __importStar(require('vite')));
59
- const builder = await createBuilder(viteConfigEnhanced);
25
+ const builder = await (0, vite_1.createBuilder)(viteConfigEnhanced);
26
+ // See Vite plugin vike:build:pluginBuildApp
60
27
  await builder.buildApp();
61
28
  }
62
29
  else {
@@ -40,7 +40,6 @@ exports.prepareViteApiCall = prepareViteApiCall;
40
40
  exports.getViteRoot = getViteRoot;
41
41
  exports.assertViteRoot = assertViteRoot;
42
42
  exports.normalizeViteRoot = normalizeViteRoot;
43
- // TODO: enable Vike extensions to add Vite plugins
44
43
  const vite_1 = require("vite");
45
44
  const context_js_1 = require("./context.js");
46
45
  const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js");
@@ -88,7 +87,10 @@ async function getViteRoot(operation) {
88
87
  }
89
88
  async function getInfoFromVite(viteConfigFromOptions, operation) {
90
89
  const viteConfigFromUserViteFile = await loadViteConfigFile(viteConfigFromOptions, operation);
91
- const root = normalizeViteRoot(viteConfigFromUserViteFile?.root ?? viteConfigFromOptions?.root ?? process.cwd());
90
+ const root = normalizeViteRoot(
91
+ // `viteConfigFromOptions.root` before `viteConfigFromUserViteFile.root` replicates Vite's precedence:
92
+ // https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1001
93
+ viteConfigFromOptions?.root ?? viteConfigFromUserViteFile?.root ?? process.cwd());
92
94
  globalObject.root = root;
93
95
  let vikeVitePluginOptions;
94
96
  let viteConfigEnhanced = viteConfigFromOptions;
@@ -154,7 +156,11 @@ function getResolveConfigArgs(viteConfig = {}, operation) {
154
156
  return [inlineConfig, command, defaultMode, defaultNodeEnv, isPreview];
155
157
  }
156
158
  function normalizeViteRoot(root) {
157
- return (0, utils_js_1.toPosixPath)(path_1.default.resolve(root));
159
+ // `path.resolve(viteConfigFromUserViteFile.configFile, root)` could be more intuitive than `path.resolve(process.cwd(), root)` but we replicate Vite's behavior (`vite.config.js` should follow Vite's API), see:
160
+ // https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1063
161
+ return (0, utils_js_1.toPosixPath)(
162
+ // Equivalent to `path.resolve(process.cwd(), root)`
163
+ path_1.default.resolve(root));
158
164
  }
159
165
  const errMsg = `A Vite plugin is modifying Vite's setting ${picocolors_1.default.cyan('root')} which is forbidden`;
160
166
  async function assertViteRoot2(root, viteConfigEnhanced, operation) {
@@ -3,27 +3,23 @@ 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.version = void 0;
6
+ exports.version = exports.getVikeConfig = void 0;
7
7
  exports.plugin = plugin;
8
8
  exports.ssr = plugin;
9
9
  exports.default = plugin;
10
+ var commonConfig_js_1 = require("./plugins/commonConfig.js");
11
+ Object.defineProperty(exports, "getVikeConfig", { enumerable: true, get: function () { return commonConfig_js_1.getVikeConfigPublic; } });
10
12
  var utils_js_1 = require("./utils.js");
11
13
  Object.defineProperty(exports, "version", { enumerable: true, get: function () { return utils_js_1.PROJECT_VERSION; } });
12
14
  const utils_js_2 = require("./utils.js");
13
- const buildConfig_js_1 = require("./plugins/buildConfig.js");
15
+ const build_js_1 = require("./plugins/build.js");
14
16
  const previewConfig_js_1 = require("./plugins/previewConfig.js");
15
- const autoFullBuild_js_1 = require("./plugins/autoFullBuild.js");
16
17
  const index_js_1 = require("./plugins/devConfig/index.js");
17
- const packageJsonFile_js_1 = require("./plugins/packageJsonFile.js");
18
- const removeRequireHookPlugin_js_1 = require("./plugins/removeRequireHookPlugin.js");
19
18
  const index_js_2 = require("./plugins/importUserCode/index.js");
20
- const distFileNames_js_1 = require("./plugins/distFileNames.js");
21
19
  const extractAssetsPlugin_js_1 = require("./plugins/extractAssetsPlugin.js");
22
20
  const extractExportNamesPlugin_js_1 = require("./plugins/extractExportNamesPlugin.js");
23
- const suppressRollupWarning_js_1 = require("./plugins/suppressRollupWarning.js");
24
21
  const setGlobalContext_js_1 = require("./plugins/setGlobalContext.js");
25
- const index_js_3 = require("./plugins/buildEntry/index.js");
26
- const commonConfig_js_1 = require("./plugins/commonConfig.js");
22
+ const commonConfig_js_2 = require("./plugins/commonConfig.js");
27
23
  const baseUrls_js_1 = require("./plugins/baseUrls.js");
28
24
  const envVars_js_1 = require("./plugins/envVars.js");
29
25
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
@@ -32,27 +28,19 @@ const getPageAssets_js_1 = require("../runtime/renderPage/getPageAssets.js");
32
28
  const resolveClientEntriesDev_js_1 = require("./shared/resolveClientEntriesDev.js");
33
29
  const workaroundCssModuleHmr_js_1 = require("./plugins/workaroundCssModuleHmr.js");
34
30
  const workaroundVite6HmrRegression_js_1 = require("./plugins/workaroundVite6HmrRegression.js");
35
- const buildApp_js_1 = require("./plugins/buildApp.js");
36
31
  // We don't call this in ./onLoad.ts to avoid a cyclic dependency with utils.ts
37
32
  (0, getPageAssets_js_1.setResolveClientEntriesDev)(resolveClientEntriesDev_js_1.resolveClientEntriesDev);
38
33
  // Return `PluginInterop` instead of `Plugin` to avoid type mismatch upon different Vite versions
39
34
  function plugin(vikeVitePluginOptions = {}) {
40
35
  const plugins = [
41
- ...(0, commonConfig_js_1.commonConfig)(vikeVitePluginOptions),
36
+ ...(0, commonConfig_js_2.commonConfig)(vikeVitePluginOptions),
42
37
  (0, index_js_2.importUserCode)(),
43
38
  ...(0, index_js_1.devConfig)(),
44
- ...(0, buildConfig_js_1.buildConfig)(),
45
- ...(0, buildApp_js_1.buildApp)(),
39
+ ...(0, build_js_1.build)(),
46
40
  (0, previewConfig_js_1.previewConfig)(),
47
- ...(0, autoFullBuild_js_1.autoFullBuild)(),
48
- (0, packageJsonFile_js_1.packageJsonFile)(),
49
- (0, removeRequireHookPlugin_js_1.removeRequireHookPlugin)(),
50
- (0, distFileNames_js_1.distFileNames)(),
51
41
  ...(0, extractAssetsPlugin_js_1.extractAssetsPlugin)(),
52
42
  (0, extractExportNamesPlugin_js_1.extractExportNamesPlugin)(),
53
- (0, suppressRollupWarning_js_1.suppressRollupWarning)(),
54
43
  ...(0, setGlobalContext_js_1.setGlobalContext)(),
55
- ...(0, index_js_3.buildEntry)(),
56
44
  (0, baseUrls_js_1.baseUrls)(),
57
45
  (0, envVars_js_1.envVarsPlugin)(),
58
46
  (0, fileEnv_js_1.fileEnv)(),
@@ -69,7 +57,7 @@ Object.defineProperty(plugin, 'apply', {
69
57
  (0, utils_js_2.assertUsage)(false, `Add ${picocolors_1.default.cyan('vike()')} instead of ${picocolors_1.default.cyan('vike')} to vite.config.js#plugins (i.e. call the function and add the return value instead of adding the function itself)`, { showStackTrace: true });
70
58
  }
71
59
  });
72
- // Ensures following works: `const vike = require('vike/plugin')` / `import vike from 'vike/plugin'`
60
+ // CJS default export `const vike = require('vike/plugin')`
73
61
  // - It needs to live at the end of this file, in order to ensure we do it after all assignments to `exports`.
74
62
  try {
75
63
  module.exports = Object.assign(exports.default, exports);
@@ -4,6 +4,7 @@ exports.baseUrls = baseUrls;
4
4
  const resolveBase_js_1 = require("../../shared/resolveBase.js");
5
5
  const utils_js_1 = require("../utils.js");
6
6
  const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
7
+ const commonConfig_js_1 = require("./commonConfig.js");
7
8
  function baseUrls() {
8
9
  let basesResolved;
9
10
  return {
@@ -13,7 +14,8 @@ function baseUrls() {
13
14
  const isDev = config._isDev;
14
15
  (0, utils_js_1.assert)(typeof isDev === 'boolean');
15
16
  const baseViteOriginal = config.base ?? '/__UNSET__'; // '/__UNSET__' because Vite resolves `_baseViteOriginal: null` to `undefined`
16
- basesResolved = (0, resolveBase_js_1.resolveBase)(baseViteOriginal, config.vike.config.baseServer ?? null, config.vike.config.baseAssets ?? null);
17
+ const vike = (0, commonConfig_js_1.getVikeConfigPublic)(config);
18
+ basesResolved = (0, resolveBase_js_1.resolveBase)(baseViteOriginal, vike.config.baseServer ?? null, vike.config.baseAssets ?? null);
17
19
  // We cannot define these in configResolved() because Vite picks up the env variables before any configResolved() hook is called
18
20
  process.env.BASE_SERVER = basesResolved.baseServer;
19
21
  process.env.BASE_ASSETS = basesResolved.baseAssets;
@@ -3,59 +3,51 @@ 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;
7
- exports.fixServerAssets_isEnabled = fixServerAssets_isEnabled;
8
- exports.fixServerAssets_assertCssCodeSplit = fixServerAssets_assertCssCodeSplit;
9
- exports.fixServerAssets_assertCssTarget = fixServerAssets_assertCssTarget;
6
+ exports.handleAssetsManifest = handleAssetsManifest;
7
+ exports.handleAssetsManifest_getBuildConfig = handleAssetsManifest_getBuildConfig;
8
+ exports.handleAssetsManifest_isFixEnabled = handleAssetsManifest_isFixEnabled;
9
+ exports.handleAssetsManifest_assertUsageCssCodeSplit = handleAssetsManifest_assertUsageCssCodeSplit;
10
+ exports.handleAssetsManifest_assertUsageCssTarget = handleAssetsManifest_assertUsageCssTarget;
10
11
  const promises_1 = __importDefault(require("fs/promises"));
11
12
  const fs_1 = __importDefault(require("fs"));
12
13
  const path_1 = __importDefault(require("path"));
13
14
  const fs_2 = require("fs");
14
15
  const utils_js_1 = require("../../utils.js");
15
16
  const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
16
- const buildConfig_js_1 = require("../buildConfig.js");
17
+ const pluginBuildConfig_js_1 = require("./pluginBuildConfig.js");
17
18
  const getAssetsDir_js_1 = require("../../shared/getAssetsDir.js");
18
19
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
19
20
  const getVikeConfig_js_1 = require("../importUserCode/v1-design/getVikeConfig.js");
20
21
  const getOutDirs_js_1 = require("../../shared/getOutDirs.js");
21
- const viteIsSSR_js_1 = require("../../shared/viteIsSSR.js");
22
- /**
23
- * true => use workaround config.build.ssrEmitAssets
24
- * false => use workaround extractAssets plugin
25
- *
26
- * Only used by V1 design.
27
- */
28
- function fixServerAssets_isEnabled() {
29
- // We currently apply the workaround iff V1 design.
30
- // Shall we allow the user to toggle between the two workarounds? E.g. based on https://vike.dev/includeAssetsImportedByServer.
31
- return true;
22
+ const isViteServerBuild_js_1 = require("../../shared/isViteServerBuild.js");
23
+ const commonConfig_js_1 = require("../commonConfig.js");
24
+ const pluginBuildEntry_js_1 = require("./pluginBuildEntry.js");
25
+ (0, utils_js_1.assertIsSingleModuleInstance)('build/handleAssetsManifest.ts');
26
+ let assetsJsonFilePath;
27
+ // true => use workaround config.build.ssrEmitAssets
28
+ // false => use workaround extractAssets plugin
29
+ function handleAssetsManifest_isFixEnabled(config) {
30
+ // Allow user to toggle between the two workarounds? E.g. based on https://vike.dev/includeAssetsImportedByServer.
31
+ return (0, getVikeConfig_js_1.isV1Design)(config);
32
32
  }
33
33
  /** https://github.com/vikejs/vike/issues/1339 */
34
34
  async function fixServerAssets(config) {
35
35
  const outDirs = (0, getOutDirs_js_1.getOutDirs)(config);
36
- const clientManifest = await loadManifest(outDirs.outDirClient);
37
- const serverManifest = await loadManifest(outDirs.outDirServer);
38
- const { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove } = addServerAssets(clientManifest, serverManifest);
39
- await copyAssets(filesToCopy, filesToRemove, config);
36
+ const clientManifest = await readManifestFile(outDirs.outDirClient);
37
+ const serverManifest = await readManifestFile(outDirs.outDirServer);
38
+ const { clientManifestMod, serverManifestMod, filesToMove, filesToRemove } = addServerAssets(clientManifest, serverManifest);
39
+ await copyAssets(filesToMove, filesToRemove, config);
40
40
  return { clientManifestMod, serverManifestMod };
41
41
  }
42
- async function loadManifest(outDir) {
43
- const manifestFilePath = path_1.default.posix.join(outDir, buildConfig_js_1.manifestTempFile);
44
- const manifestFileContent = await promises_1.default.readFile(manifestFilePath, 'utf-8');
45
- (0, utils_js_1.assert)(manifestFileContent);
46
- const manifest = JSON.parse(manifestFileContent);
47
- (0, utils_js_1.assert)(manifest);
48
- return manifest;
49
- }
50
- async function copyAssets(filesToCopy, filesToRemove, config) {
42
+ async function copyAssets(filesToMove, filesToRemove, config) {
51
43
  const { outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(config);
52
44
  const assetsDir = (0, getAssetsDir_js_1.getAssetsDir)(config);
53
45
  const assetsDirServer = path_1.default.posix.join(outDirServer, assetsDir);
54
- if (!filesToCopy.length && !filesToRemove.length && !(0, fs_2.existsSync)(assetsDirServer))
46
+ if (!filesToMove.length && !filesToRemove.length && !(0, fs_2.existsSync)(assetsDirServer))
55
47
  return;
56
48
  (0, utils_js_1.assert)((0, fs_2.existsSync)(assetsDirServer));
57
49
  const concurrencyLimit = (0, utils_js_1.pLimit)(10);
58
- await Promise.all(filesToCopy.map((file) => concurrencyLimit(async () => {
50
+ await Promise.all(filesToMove.map((file) => concurrencyLimit(async () => {
59
51
  const source = path_1.default.posix.join(outDirServer, file);
60
52
  const target = path_1.default.posix.join(outDirClient, file);
61
53
  await promises_1.default.mkdir(path_1.default.posix.dirname(target), { recursive: true });
@@ -91,19 +83,20 @@ function addServerAssets(clientManifest, serverManifest) {
91
83
  (0, utils_js_1.assert)(!entriesServer.has(pageId));
92
84
  entriesServer.set(pageId, { key, ...resources });
93
85
  }
94
- let filesToCopy = [];
86
+ let filesToMove = [];
95
87
  let filesToRemove = [];
88
+ // Copy page assets
96
89
  for (const [pageId, entryClient] of entriesClient.entries()) {
97
90
  const entryServer = entriesServer.get(pageId);
98
91
  if (!entryServer)
99
92
  continue;
100
- const cssToAdd = [];
93
+ const cssToMove = [];
101
94
  const cssToRemove = [];
102
- const assetsToAdd = [];
95
+ const assetsToMove = [];
103
96
  const assetsToRemove = [];
104
97
  entryServer.css.forEach((cssServer) => {
105
98
  if (!entryClient.css.some((cssClient) => cssServer.hash === cssClient.hash)) {
106
- cssToAdd.push(cssServer.src);
99
+ cssToMove.push(cssServer.src);
107
100
  }
108
101
  else {
109
102
  cssToRemove.push(cssServer.src);
@@ -111,17 +104,17 @@ function addServerAssets(clientManifest, serverManifest) {
111
104
  });
112
105
  entryServer.assets.forEach((assetServer) => {
113
106
  if (!entryClient.assets.some((assetClient) => assetServer.hash === assetClient.hash)) {
114
- assetsToAdd.push(assetServer.src);
107
+ assetsToMove.push(assetServer.src);
115
108
  }
116
109
  else {
117
110
  assetsToRemove.push(assetServer.src);
118
111
  }
119
112
  });
120
- if (cssToAdd.length) {
113
+ if (cssToMove.length) {
121
114
  const { key } = entryClient;
122
- filesToCopy.push(...cssToAdd);
115
+ filesToMove.push(...cssToMove);
123
116
  (_a = clientManifest[key]).css ?? (_a.css = []);
124
- clientManifest[key].css?.push(...cssToAdd);
117
+ clientManifest[key].css?.push(...cssToMove);
125
118
  }
126
119
  if (cssToRemove.length) {
127
120
  const { key } = entryServer;
@@ -129,11 +122,11 @@ function addServerAssets(clientManifest, serverManifest) {
129
122
  (_b = serverManifest[key]).css ?? (_b.css = []);
130
123
  serverManifest[key].css = serverManifest[key].css.filter((entry) => !cssToRemove.includes(entry));
131
124
  }
132
- if (assetsToAdd.length) {
125
+ if (assetsToMove.length) {
133
126
  const { key } = entryClient;
134
- filesToCopy.push(...assetsToAdd);
127
+ filesToMove.push(...assetsToMove);
135
128
  (_c = clientManifest[key]).assets ?? (_c.assets = []);
136
- clientManifest[key].assets?.push(...assetsToAdd);
129
+ clientManifest[key].assets?.push(...assetsToMove);
137
130
  }
138
131
  if (assetsToRemove.length) {
139
132
  const { key } = entryServer;
@@ -142,11 +135,40 @@ function addServerAssets(clientManifest, serverManifest) {
142
135
  serverManifest[key].assets = serverManifest[key].assets.filter((entry) => !assetsToRemove.includes(entry));
143
136
  }
144
137
  }
138
+ // Also copy assets of virtual:@brillout/vite-plugin-server-entry:serverEntry
139
+ {
140
+ const filesClientAll = [];
141
+ for (const key in clientManifest) {
142
+ const entry = clientManifest[key];
143
+ filesClientAll.push(entry.file);
144
+ filesClientAll.push(...(entry.assets ?? []));
145
+ filesClientAll.push(...(entry.css ?? []));
146
+ }
147
+ for (const key in serverManifest) {
148
+ const entry = serverManifest[key];
149
+ if (!entry.isEntry)
150
+ continue;
151
+ const resources = collectResources(entry, serverManifest);
152
+ const css = resources.css.map((css) => css.src).filter((file) => !filesClientAll.includes(file));
153
+ const assets = resources.assets.map((asset) => asset.src).filter((file) => !filesClientAll.includes(file));
154
+ filesToMove.push(...css, ...assets);
155
+ if (css.length > 0 || assets.length > 0) {
156
+ (0, utils_js_1.assert)(!clientManifest[key]);
157
+ clientManifest[key] = {
158
+ ...entry,
159
+ css,
160
+ assets,
161
+ dynamicImports: undefined,
162
+ imports: undefined
163
+ };
164
+ }
165
+ }
166
+ }
145
167
  const clientManifestMod = clientManifest;
146
168
  const serverManifestMod = serverManifest;
147
- filesToCopy = (0, utils_js_1.unique)(filesToCopy);
148
- filesToRemove = (0, utils_js_1.unique)(filesToRemove).filter((file) => !filesToCopy.includes(file));
149
- return { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove };
169
+ filesToMove = (0, utils_js_1.unique)(filesToMove);
170
+ filesToRemove = (0, utils_js_1.unique)(filesToRemove).filter((file) => !filesToMove.includes(file));
171
+ return { clientManifestMod, serverManifestMod, filesToMove, filesToRemove };
150
172
  }
151
173
  function getPageId(key) {
152
174
  // Normalize from:
@@ -189,22 +211,22 @@ function collectResources(entryRoot, manifest) {
189
211
  // </head>
190
212
  // ```
191
213
  function getHash(src) {
192
- // src is guarenteed to end with `.[hash][extname]`, see distFileNames.ts
214
+ // src is guarenteed to end with `.[hash][extname]`, see pluginDistFileNames.ts
193
215
  const hash = src.split('.').at(-2);
194
216
  (0, utils_js_1.assert)(hash);
195
217
  return hash;
196
218
  }
197
219
  // https://github.com/vikejs/vike/issues/1993
198
- function fixServerAssets_assertCssCodeSplit(config) {
220
+ function handleAssetsManifest_assertUsageCssCodeSplit(config) {
221
+ if (!handleAssetsManifest_isFixEnabled(config))
222
+ return;
199
223
  (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 });
200
224
  }
201
225
  const targets = [];
202
- async function fixServerAssets_assertCssTarget(config) {
203
- if (!fixServerAssets_isEnabled())
204
- return;
205
- if (!(await (0, getVikeConfig_js_1.isV1Design)(config)))
226
+ function handleAssetsManifest_assertUsageCssTarget(config) {
227
+ if (!handleAssetsManifest_isFixEnabled(config))
206
228
  return;
207
- const isServerSide = (0, viteIsSSR_js_1.viteIsSSR)(config);
229
+ const isServerSide = (0, isViteServerBuild_js_1.isViteServerBuild)(config);
208
230
  (0, utils_js_1.assert)(typeof isServerSide === 'boolean');
209
231
  (0, utils_js_1.assert)(config.build.target !== undefined);
210
232
  targets.push({ global: config.build.target, css: config.build.cssTarget, isServerSide });
@@ -249,3 +271,59 @@ function removeEmptyDirectories(dirPath) {
249
271
  fs_1.default.rmdirSync(dirPath);
250
272
  }
251
273
  }
274
+ async function readManifestFile(outDir) {
275
+ const manifestFilePath = path_1.default.posix.join(outDir, pluginBuildConfig_js_1.manifestTempFile);
276
+ const manifestFileContent = await promises_1.default.readFile(manifestFilePath, 'utf-8');
277
+ (0, utils_js_1.assert)(manifestFileContent);
278
+ const manifest = JSON.parse(manifestFileContent);
279
+ (0, utils_js_1.assert)(manifest);
280
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(manifest));
281
+ return manifest;
282
+ }
283
+ async function writeManifestFile(manifest, manifestFilePath) {
284
+ (0, utils_js_1.assert)((0, utils_js_1.isObject)(manifest));
285
+ const manifestFileContent = JSON.stringify(manifest, null, 2);
286
+ await promises_1.default.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
287
+ }
288
+ function handleAssetsManifest_getBuildConfig(config) {
289
+ const vike = (0, commonConfig_js_1.getVikeConfigPublic)(config);
290
+ const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
291
+ return {
292
+ // https://github.com/vikejs/vike/issues/1339
293
+ ssrEmitAssets: isFixEnabled ? true : undefined,
294
+ // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
295
+ cssMinify: isFixEnabled ? 'esbuild' : undefined,
296
+ manifest: pluginBuildConfig_js_1.manifestTempFile,
297
+ copyPublicDir: vike.config.vite6BuilderApp
298
+ ? // Already set by vike:build:pluginBuildApp
299
+ undefined
300
+ : !(0, isViteServerBuild_js_1.isViteServerBuild)(config)
301
+ };
302
+ }
303
+ async function handleAssetsManifest(config, viteEnv, options, bundle) {
304
+ if ((0, isViteServerBuild_js_1.isViteServerBuild_onlySsrEnv)(config, viteEnv)) {
305
+ (0, utils_js_1.assert)(!assetsJsonFilePath);
306
+ const outDirs = (0, getOutDirs_js_1.getOutDirs)(config, viteEnv);
307
+ assetsJsonFilePath = path_1.default.posix.join(outDirs.outDirRoot, 'assets.json');
308
+ await writeAssetsManifestFile(outDirs, assetsJsonFilePath, config);
309
+ }
310
+ if ((0, isViteServerBuild_js_1.isViteServerBuild)(config, viteEnv)) {
311
+ (0, utils_js_1.assert)(assetsJsonFilePath);
312
+ // Replace __VITE_ASSETS_MANIFEST__ in all server-side bundles
313
+ await (0, pluginBuildEntry_js_1.set_macro_ASSETS_MANIFEST)(options, bundle, assetsJsonFilePath);
314
+ }
315
+ }
316
+ async function writeAssetsManifestFile(outDirs, assetsJsonFilePath, config) {
317
+ const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
318
+ const clientManifestFilePath = path_1.default.posix.join(outDirs.outDirClient, pluginBuildConfig_js_1.manifestTempFile);
319
+ const serverManifestFilePath = path_1.default.posix.join(outDirs.outDirServer, pluginBuildConfig_js_1.manifestTempFile);
320
+ if (!isFixEnabled) {
321
+ await promises_1.default.copyFile(clientManifestFilePath, assetsJsonFilePath);
322
+ }
323
+ else {
324
+ const { clientManifestMod } = await fixServerAssets(config);
325
+ await writeManifestFile(clientManifestMod, assetsJsonFilePath);
326
+ }
327
+ await promises_1.default.rm(clientManifestFilePath);
328
+ await promises_1.default.rm(serverManifestFilePath);
329
+ }
@@ -0,0 +1,145 @@
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.pluginAutoFullBuild = pluginAutoFullBuild;
7
+ exports.isPrerenderForceExit = isPrerenderForceExit;
8
+ const vite_1 = require("vite");
9
+ const utils_js_1 = require("../../utils.js");
10
+ const runPrerender_js_1 = require("../../../prerender/runPrerender.js");
11
+ const context_js_1 = require("../../../prerender/context.js");
12
+ const isViteCliCall_js_1 = require("../../shared/isViteCliCall.js");
13
+ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
14
+ const logErrorHint_js_1 = require("../../../runtime/renderPage/logErrorHint.js");
15
+ const pluginBuildConfig_js_1 = require("./pluginBuildConfig.js");
16
+ const getVikeConfig_js_1 = require("../importUserCode/v1-design/getVikeConfig.js");
17
+ const context_js_2 = require("../../../api/context.js");
18
+ const handleAssetsManifest_js_1 = require("./handleAssetsManifest.js");
19
+ const isViteServerBuild_js_1 = require("../../shared/isViteServerBuild.js");
20
+ (0, utils_js_1.assertIsSingleModuleInstance)('build/pluginAutoFullBuild.ts');
21
+ let forceExit = false;
22
+ function pluginAutoFullBuild() {
23
+ let config;
24
+ let vikeConfig;
25
+ return [
26
+ {
27
+ name: 'vike:build:pluginAutoFullBuild',
28
+ apply: 'build',
29
+ enforce: 'pre',
30
+ async configResolved(config_) {
31
+ vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(config_);
32
+ config = config_;
33
+ abortViteBuildSsr(vikeConfig);
34
+ },
35
+ writeBundle: {
36
+ /* We can't use this because it breaks Vite's logging. TODO/eventually: try again with latest Vite version.
37
+ sequential: true,
38
+ order: 'pre',
39
+ */
40
+ async handler(options, bundle) {
41
+ await (0, handleAssetsManifest_js_1.handleAssetsManifest)(config, this.environment, options, bundle);
42
+ await triggerFullBuild(config, vikeConfig, this.environment, bundle);
43
+ }
44
+ }
45
+ },
46
+ {
47
+ name: 'vike:build:pluginAutoFullBuild:forceExit',
48
+ apply: 'build',
49
+ enforce: 'post',
50
+ closeBundle: {
51
+ sequential: true,
52
+ order: 'post',
53
+ handler() {
54
+ (0, utils_js_1.onSetupBuild)();
55
+ (0, handleAssetsManifest_js_1.handleAssetsManifest_assertUsageCssTarget)(config);
56
+ if (forceExit &&
57
+ // Let vike:build:pluginBuildApp force exit
58
+ !vikeConfig.global.config.vite6BuilderApp) {
59
+ (0, runPrerender_js_1.runPrerender_forceExit)();
60
+ (0, utils_js_1.assert)(false);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ ];
66
+ }
67
+ async function triggerFullBuild(config, vikeConfig, viteEnv, bundle) {
68
+ // Whether builder.buildApp() is being used, see plugin:build:pluginBuildApp
69
+ const isBuilderApp = vikeConfig.global.config.vite6BuilderApp;
70
+ // If builder.buildApp() => trigger at end of `this.environment.name === 'ssr'`.
71
+ // Else => trigger at end of client-side build.
72
+ if (isBuilderApp ? !(0, isViteServerBuild_js_1.isViteServerBuild_onlySsrEnv)(config, viteEnv) : !(0, isViteServerBuild_js_1.isViteClientBuild)(config, viteEnv))
73
+ return;
74
+ if (isEntirelyDisabled(vikeConfig))
75
+ return;
76
+ // Workaround for @vitejs/plugin-legacy
77
+ // - The legacy plugin triggers its own Rollup build for the client-side.
78
+ // - The legacy plugin doesn't generate a manifest => we can use that to detect the legacy plugin build.
79
+ // - Issue & reproduction: https://github.com/vikejs/vike/issues/1154#issuecomment-1965954636
80
+ if (!bundle[pluginBuildConfig_js_1.manifestTempFile])
81
+ return;
82
+ const configInline = getFullBuildInlineConfig(config);
83
+ if (!isBuilderApp) {
84
+ try {
85
+ await (0, vite_1.build)(setSSR(configInline));
86
+ }
87
+ catch (err) {
88
+ // Avoid Rollup prefixing the error with [vike:build:pluginAutoFullBuild], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
89
+ console.error(err);
90
+ (0, logErrorHint_js_1.logErrorHint)(err);
91
+ process.exit(1);
92
+ }
93
+ }
94
+ else {
95
+ // The server bulid is already called by builder.buildApp()
96
+ }
97
+ if ((0, context_js_1.isPrerenderAutoRunEnabled)(vikeConfig)) {
98
+ const res = await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline, config);
99
+ forceExit = res.forceExit;
100
+ }
101
+ }
102
+ function setSSR(configInline) {
103
+ return {
104
+ ...configInline,
105
+ build: {
106
+ ...configInline.build,
107
+ ssr: true
108
+ }
109
+ };
110
+ }
111
+ function abortViteBuildSsr(vikeConfig) {
112
+ if (vikeConfig.global.config.disableAutoFullBuild !== true && (0, isViteCliCall_js_1.isViteCliCall)() && (0, isViteCliCall_js_1.getViteConfigFromCli)()?.build.ssr) {
113
+ (0, utils_js_1.assertWarning)(false, `The CLI call ${picocolors_1.default.cyan('$ vite build --ssr')} is superfluous since ${picocolors_1.default.cyan('$ vite build')} also builds the server-side. If you want two separate build steps then use https://vike.dev/disableAutoFullBuild or use Vite's ${picocolors_1.default.cyan('build()')} API.`, { onlyOnce: true });
114
+ process.exit(0);
115
+ }
116
+ }
117
+ function isEntirelyDisabled(vikeConfig) {
118
+ const { disableAutoFullBuild } = vikeConfig.global.config;
119
+ if (disableAutoFullBuild === undefined || disableAutoFullBuild === 'prerender') {
120
+ const isUserUsingViteApi = !(0, isViteCliCall_js_1.isViteCliCall)() && !(0, context_js_2.isVikeCliOrApi)();
121
+ return isUserUsingViteApi;
122
+ }
123
+ else {
124
+ return disableAutoFullBuild;
125
+ }
126
+ }
127
+ function isPrerenderForceExit() {
128
+ return forceExit;
129
+ }
130
+ function getFullBuildInlineConfig(config) {
131
+ const configFromCli = !(0, isViteCliCall_js_1.isViteCliCall)() ? null : (0, isViteCliCall_js_1.getViteConfigFromCli)();
132
+ if (config._viteConfigEnhanced) {
133
+ return config._viteConfigEnhanced;
134
+ }
135
+ else {
136
+ return {
137
+ ...configFromCli,
138
+ configFile: configFromCli?.configFile || config.configFile,
139
+ root: config.root,
140
+ build: {
141
+ ...configFromCli?.build
142
+ }
143
+ };
144
+ }
145
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pluginBuildApp = pluginBuildApp;
4
+ const runPrerender_js_1 = require("../../../prerender/runPrerender.js");
5
+ const getOutDirs_js_1 = require("../../shared/getOutDirs.js");
6
+ const utils_js_1 = require("../../utils.js");
7
+ const commonConfig_js_1 = require("../commonConfig.js");
8
+ const pluginAutoFullBuild_js_1 = require("./pluginAutoFullBuild.js");
9
+ function pluginBuildApp() {
10
+ return [
11
+ {
12
+ name: 'vike:build:pluginBuildApp',
13
+ apply: 'build',
14
+ config(config) {
15
+ const vike = (0, commonConfig_js_1.getVikeConfigPublic)(config);
16
+ if (!vike.config.vite6BuilderApp)
17
+ return;
18
+ return {
19
+ builder: {
20
+ // Can be overriden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
21
+ async buildApp(builder) {
22
+ (0, utils_js_1.assert)(builder.environments.client);
23
+ (0, utils_js_1.assert)(builder.environments.ssr);
24
+ await builder.build(builder.environments.client);
25
+ await builder.build(builder.environments.ssr);
26
+ if ((0, pluginAutoFullBuild_js_1.isPrerenderForceExit)()) {
27
+ (0, runPrerender_js_1.runPrerender_forceExit)();
28
+ (0, utils_js_1.assert)(false);
29
+ }
30
+ }
31
+ },
32
+ environments: {
33
+ ssr: {
34
+ consumer: 'server',
35
+ build: {
36
+ outDir: (0, getOutDirs_js_1.resolveOutDir)(config, true),
37
+ ssr: true
38
+ }
39
+ },
40
+ client: {
41
+ consumer: 'client',
42
+ build: {
43
+ copyPublicDir: true,
44
+ ssr: false
45
+ }
46
+ }
47
+ }
48
+ };
49
+ }
50
+ }
51
+ ];
52
+ }