vike 0.4.215 → 0.4.217

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 (143) hide show
  1. package/dist/cjs/__internal/index.js +2 -2
  2. package/dist/cjs/node/api/build.js +10 -3
  3. package/dist/cjs/node/api/context.js +8 -6
  4. package/dist/cjs/node/api/dev.js +7 -2
  5. package/dist/cjs/node/api/{prepareApiCall.js → prepareViteApiCall.js} +16 -6
  6. package/dist/cjs/node/api/prerender.js +7 -2
  7. package/dist/cjs/node/api/preview.js +7 -2
  8. package/dist/cjs/node/api/utils.js +1 -0
  9. package/dist/cjs/node/plugin/index.js +7 -10
  10. package/dist/cjs/node/plugin/onLoad.js +2 -2
  11. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +15 -12
  12. package/dist/cjs/node/plugin/plugins/baseUrls.js +17 -12
  13. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +1 -1
  14. package/dist/cjs/node/plugin/plugins/buildConfig.js +10 -10
  15. package/dist/cjs/node/plugin/plugins/commonConfig.js +35 -4
  16. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  17. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -4
  18. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +4 -7
  19. package/dist/cjs/node/plugin/plugins/importBuild/getVikeManifest.js +2 -2
  20. package/dist/cjs/node/plugin/plugins/importBuild/index.js +8 -6
  21. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +8 -8
  22. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +9 -13
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +8 -4
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +128 -0
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +40 -26
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -4
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +1 -1
  28. package/dist/cjs/node/plugin/plugins/previewConfig.js +4 -4
  29. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +35 -17
  30. package/dist/cjs/node/prerender/runPrerender.js +5 -7
  31. package/dist/cjs/node/prerender/utils.js +1 -1
  32. package/dist/cjs/node/runtime/globalContext.js +21 -13
  33. package/dist/cjs/node/runtime/index-common.js +3 -1
  34. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -1
  35. package/dist/cjs/node/runtime/renderPage.js +4 -2
  36. package/dist/cjs/node/runtime/utils.js +1 -2
  37. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +25 -0
  38. package/dist/cjs/node/runtime-dev/index.js +32 -0
  39. package/dist/cjs/node/shared/resolveBase.js +41 -0
  40. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +2 -2
  41. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +2 -2
  42. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  43. package/dist/cjs/utils/assertSetup.js +135 -0
  44. package/dist/cjs/utils/isDocker.js +2 -2
  45. package/dist/cjs/utils/requireResolve.js +2 -2
  46. package/dist/esm/__internal/index.js +2 -2
  47. package/dist/esm/node/api/build.d.ts +5 -0
  48. package/dist/esm/node/api/build.js +10 -3
  49. package/dist/esm/node/api/context.js +9 -7
  50. package/dist/esm/node/api/dev.d.ts +5 -0
  51. package/dist/esm/node/api/dev.js +7 -2
  52. package/dist/esm/node/api/prepareViteApiCall.d.ts +7 -0
  53. package/dist/esm/node/api/{prepareApiCall.js → prepareViteApiCall.js} +16 -6
  54. package/dist/esm/node/api/prerender.d.ts +5 -0
  55. package/dist/esm/node/api/prerender.js +7 -2
  56. package/dist/esm/node/api/preview.d.ts +5 -0
  57. package/dist/esm/node/api/preview.js +7 -2
  58. package/dist/esm/node/api/utils.d.ts +1 -0
  59. package/dist/esm/node/api/utils.js +1 -0
  60. package/dist/esm/node/cli/parseCli.d.ts +1 -1
  61. package/dist/esm/node/plugin/index.d.ts +3 -3
  62. package/dist/esm/node/plugin/index.js +6 -9
  63. package/dist/esm/node/plugin/onLoad.js +1 -1
  64. package/dist/esm/node/plugin/plugins/autoFullBuild.js +15 -12
  65. package/dist/esm/node/plugin/plugins/baseUrls.d.ts +2 -2
  66. package/dist/esm/node/plugin/plugins/baseUrls.js +17 -12
  67. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +1 -1
  68. package/dist/esm/node/plugin/plugins/buildConfig.js +11 -11
  69. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -1
  70. package/dist/esm/node/plugin/plugins/commonConfig.js +36 -5
  71. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.d.ts +1 -1
  72. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  73. package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -5
  74. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +4 -7
  75. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.d.ts +3 -2
  76. package/dist/esm/node/plugin/plugins/importBuild/getVikeManifest.js +2 -2
  77. package/dist/esm/node/plugin/plugins/importBuild/index.js +8 -6
  78. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
  79. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +8 -8
  80. package/dist/esm/node/plugin/plugins/importUserCode/index.js +11 -15
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +8 -4
  83. package/dist/esm/{shared/ConfigVike.d.ts → node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.d.ts} +14 -12
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +123 -0
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +8 -6
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +41 -27
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +3 -4
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +1 -1
  89. package/dist/esm/node/plugin/plugins/previewConfig.js +5 -5
  90. package/dist/esm/node/plugin/plugins/setGlobalContext.d.ts +1 -1
  91. package/dist/esm/node/plugin/plugins/setGlobalContext.js +37 -19
  92. package/dist/esm/node/prerender/runPrerender.js +6 -8
  93. package/dist/esm/node/prerender/utils.d.ts +1 -1
  94. package/dist/esm/node/prerender/utils.js +1 -1
  95. package/dist/esm/node/runtime/globalContext.d.ts +8 -4
  96. package/dist/esm/node/runtime/globalContext.js +22 -14
  97. package/dist/esm/node/runtime/index-common.d.ts +1 -0
  98. package/dist/esm/node/runtime/index-common.js +1 -0
  99. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -1
  100. package/dist/esm/node/runtime/renderPage.js +5 -3
  101. package/dist/esm/node/runtime/utils.d.ts +1 -2
  102. package/dist/esm/node/runtime/utils.js +1 -2
  103. package/dist/esm/node/runtime-dev/createDevMiddleware.d.ts +10 -0
  104. package/dist/esm/node/runtime-dev/createDevMiddleware.js +23 -0
  105. package/dist/esm/node/runtime-dev/index.d.ts +3 -0
  106. package/dist/esm/node/runtime-dev/index.js +6 -0
  107. package/dist/esm/node/shared/resolveBase.d.ts +11 -0
  108. package/dist/esm/node/shared/resolveBase.js +36 -0
  109. package/dist/esm/shared/page-configs/Config.d.ts +2 -2
  110. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +1 -1
  111. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +1 -1
  112. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  113. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  114. package/dist/esm/utils/assertSetup.d.ts +20 -0
  115. package/dist/esm/utils/assertSetup.js +130 -0
  116. package/dist/esm/utils/isDocker.js +1 -1
  117. package/dist/esm/utils/projectInfo.d.ts +1 -1
  118. package/dist/esm/utils/requireResolve.js +1 -1
  119. package/package.json +1 -1
  120. package/dist/cjs/node/plugin/plugins/config/assertVikeConfig.js +0 -75
  121. package/dist/cjs/node/plugin/plugins/config/index.js +0 -81
  122. package/dist/cjs/node/plugin/plugins/config/pickFirst.js +0 -6
  123. package/dist/cjs/node/plugin/plugins/config/resolveBase.js +0 -47
  124. package/dist/cjs/node/shared/getConfigVike.js +0 -10
  125. package/dist/cjs/shared/ConfigVike.js +0 -2
  126. package/dist/cjs/utils/assertIsNotProductionRuntime.js +0 -62
  127. package/dist/cjs/utils/assertNodeEnv.js +0 -106
  128. package/dist/esm/node/api/prepareApiCall.d.ts +0 -7
  129. package/dist/esm/node/plugin/plugins/config/assertVikeConfig.d.ts +0 -7
  130. package/dist/esm/node/plugin/plugins/config/assertVikeConfig.js +0 -73
  131. package/dist/esm/node/plugin/plugins/config/index.d.ts +0 -3
  132. package/dist/esm/node/plugin/plugins/config/index.js +0 -76
  133. package/dist/esm/node/plugin/plugins/config/pickFirst.d.ts +0 -1
  134. package/dist/esm/node/plugin/plugins/config/pickFirst.js +0 -3
  135. package/dist/esm/node/plugin/plugins/config/resolveBase.d.ts +0 -10
  136. package/dist/esm/node/plugin/plugins/config/resolveBase.js +0 -42
  137. package/dist/esm/node/shared/getConfigVike.d.ts +0 -4
  138. package/dist/esm/node/shared/getConfigVike.js +0 -8
  139. package/dist/esm/shared/ConfigVike.js +0 -1
  140. package/dist/esm/utils/assertIsNotProductionRuntime.d.ts +0 -12
  141. package/dist/esm/utils/assertIsNotProductionRuntime.js +0 -59
  142. package/dist/esm/utils/assertNodeEnv.d.ts +0 -10
  143. package/dist/esm/utils/assertNodeEnv.js +0 -103
@@ -1,76 +0,0 @@
1
- export { resolveVikeConfig };
2
- import { assertVikeConfig } from './assertVikeConfig.js';
3
- import { assert, isDevCheck } from '../../utils.js';
4
- import { pickFirst } from './pickFirst.js';
5
- import { resolveBase } from './resolveBase.js';
6
- import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
7
- import pc from '@brillout/picocolors';
8
- function resolveVikeConfig(vikeConfig) {
9
- let isDev;
10
- return {
11
- name: 'vike:resolveVikeConfig',
12
- enforce: 'pre',
13
- apply(_config, env) {
14
- isDev = isDevCheck(env);
15
- return true;
16
- },
17
- async configResolved(config) {
18
- assert(typeof isDev === 'boolean');
19
- const promise = getConfigVikPromise(vikeConfig, config, isDev);
20
- config.configVikePromise = promise;
21
- await promise;
22
- }
23
- };
24
- }
25
- async function getConfigVikPromise(vikeConfig, config, isDev) {
26
- const fromPluginOptions = (vikeConfig ?? {});
27
- const fromViteConfig = (config.vike ?? {});
28
- const configs = [fromPluginOptions, fromViteConfig];
29
- assertVikeConfig(fromViteConfig, ({ prop, errMsg }) => `vite.config.js#vike.${prop} ${errMsg}`);
30
- // TODO/v1-release: deprecate this
31
- assertVikeConfig(fromPluginOptions, ({ prop, errMsg }) => `vite.config.js > vike option ${prop} ${errMsg}`);
32
- const crawlWithGit = fromPluginOptions.crawl?.git ?? null;
33
- const { globalVikeConfig: fromPlusConfigFile } = await getVikeConfig(config, isDev, { crawlWithGit });
34
- configs.push(fromPlusConfigFile);
35
- assertVikeConfig(fromPlusConfigFile, ({ prop, errMsg }) => {
36
- // TODO: add config file path ?
37
- return `config ${pc.cyan(prop)} ${errMsg}`;
38
- });
39
- const { baseServer, baseAssets } = resolveBase(configs, config);
40
- const configVike = {
41
- disableAutoFullBuild: pickFirst(configs.map((c) => c.disableAutoFullBuild)) ?? null,
42
- prerender: resolvePrerenderOptions(configs),
43
- includeAssetsImportedByServer: pickFirst(configs.map((c) => c.includeAssetsImportedByServer)) ?? true,
44
- baseServer,
45
- baseAssets,
46
- redirects: merge(configs.map((c) => c.redirects)) ?? {},
47
- disableUrlNormalization: pickFirst(configs.map((c) => c.disableUrlNormalization)) ?? false,
48
- trailingSlash: pickFirst(configs.map((c) => c.trailingSlash)) ?? false,
49
- crawl: {
50
- git: crawlWithGit
51
- }
52
- };
53
- return configVike;
54
- }
55
- function resolvePrerenderOptions(configs) {
56
- if (!configs.some((c) => c.prerender)) {
57
- return false;
58
- }
59
- const configsPrerender = configs.map((c) => c.prerender).filter(isObject);
60
- return {
61
- partial: pickFirst(configsPrerender.map((c) => c.partial)) ?? false,
62
- noExtraDir: pickFirst(configsPrerender.map((c) => c.noExtraDir)) ?? false,
63
- parallel: pickFirst(configsPrerender.map((c) => c.parallel)) ?? true,
64
- disableAutoRun: pickFirst(configsPrerender.map((c) => c.disableAutoRun)) ?? false
65
- };
66
- }
67
- function isObject(p) {
68
- return typeof p === 'object';
69
- }
70
- function merge(objs) {
71
- const obj = {};
72
- objs.forEach((e) => {
73
- Object.assign(obj, e);
74
- });
75
- return obj;
76
- }
@@ -1 +0,0 @@
1
- export declare function pickFirst<T>(arr: T[]): T | undefined;
@@ -1,3 +0,0 @@
1
- export function pickFirst(arr) {
2
- return arr.filter((v) => v !== undefined)[0];
3
- }
@@ -1,10 +0,0 @@
1
- export { resolveBase };
2
- export { resolveBaseFromUserConfig };
3
- import type { ResolvedConfig, UserConfig } from 'vite';
4
- import type { ConfigVikeUserProvided } from '../../../../shared/ConfigVike.js';
5
- type BaseServers = {
6
- baseServer: string;
7
- baseAssets: string;
8
- };
9
- declare function resolveBase(configs: ConfigVikeUserProvided[], config: ResolvedConfig): BaseServers;
10
- declare function resolveBaseFromUserConfig(config: UserConfig, configVike: undefined | ConfigVikeUserProvided): BaseServers;
@@ -1,42 +0,0 @@
1
- export { resolveBase };
2
- export { resolveBaseFromUserConfig };
3
- import { assert, assertUsage, isBaseServer, isBaseAssets } from '../../utils.js';
4
- import { pickFirst } from './pickFirst.js';
5
- import pc from '@brillout/picocolors';
6
- function resolveBase(configs, config) {
7
- const baseServer = pickFirst(configs.map((c) => c.baseServer)) ?? null;
8
- const baseAssets = pickFirst(configs.map((c) => c.baseAssets)) ?? null;
9
- let baseOriginal = config._baseOriginal;
10
- if (baseOriginal === '/__UNSET__')
11
- baseOriginal = null;
12
- assert(baseOriginal === null || typeof baseOriginal == 'string');
13
- return resolve(baseOriginal, baseServer, baseAssets);
14
- }
15
- function resolveBaseFromUserConfig(config, configVike) {
16
- return resolve(config.base ?? null, configVike?.baseServer ?? null, configVike?.baseAssets ?? null);
17
- }
18
- function resolve(base, baseServer_, baseAssets_) {
19
- {
20
- const wrongBase = (val) => `should start with ${pc.cyan('/')}, ${pc.cyan('http://')}, or ${pc.cyan('https://')} (it's ${pc.cyan(val)} instead)`;
21
- assertUsage(base === null || isBaseAssets(base), `vite.config.js#base ${wrongBase(base)}`);
22
- assertUsage(baseAssets_ === null || isBaseAssets(baseAssets_), `Config ${pc.cyan('baseAssets')} ${wrongBase(baseAssets_)}`);
23
- assertUsage(baseServer_ === null || baseServer_.startsWith('/'), `Config ${pc.cyan('baseServer')} should start with a leading slash ${pc.cyan('/')} (it's ${pc.cyan(String(baseServer_))} instead)`);
24
- }
25
- if (base) {
26
- if (base.startsWith('http')) {
27
- baseAssets_ = baseAssets_ ?? base;
28
- }
29
- else {
30
- baseAssets_ = baseAssets_ ?? base;
31
- baseServer_ = baseServer_ ?? base;
32
- }
33
- }
34
- const baseServer = baseServer_ ?? '/';
35
- const baseAssets = baseAssets_ ?? '/';
36
- assert(isBaseAssets(baseAssets));
37
- assert(isBaseServer(baseServer));
38
- return {
39
- baseServer,
40
- baseAssets
41
- };
42
- }
@@ -1,4 +0,0 @@
1
- export { getConfigVike };
2
- import { ResolvedConfig } from 'vite';
3
- import type { ConfigVikeResolved } from '../../shared/ConfigVike.js';
4
- declare function getConfigVike(config: ResolvedConfig): Promise<ConfigVikeResolved>;
@@ -1,8 +0,0 @@
1
- export { getConfigVike };
2
- import { assert } from './utils.js';
3
- async function getConfigVike(config) {
4
- const { configVikePromise } = config;
5
- assert(configVikePromise);
6
- const configVike = await configVikePromise;
7
- return configVike;
8
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- export { assertIsNotProductionRuntime };
2
- export { markEnvAsViteDev };
3
- export { markEnvAsVitePreview };
4
- export { markEnvAsVikePluginLoaded };
5
- export { assertEnv };
6
- export { vikeVitePluginLoadedInProductionError };
7
- declare const vikeVitePluginLoadedInProductionError = "Loading Vike's Vite plugin (the vike/plugin module) is prohibited in production.";
8
- declare function assertIsNotProductionRuntime(): void | undefined;
9
- declare function markEnvAsViteDev(): void | undefined;
10
- declare function markEnvAsVitePreview(): void | undefined;
11
- declare function markEnvAsVikePluginLoaded(): void;
12
- declare function assertEnv(): void | undefined;
@@ -1,59 +0,0 @@
1
- // Mechanism to ensure code isn't loaded by production runtime
2
- export { assertIsNotProductionRuntime };
3
- export { markEnvAsViteDev };
4
- export { markEnvAsVitePreview };
5
- export { markEnvAsVikePluginLoaded };
6
- export { assertEnv };
7
- export { vikeVitePluginLoadedInProductionError };
8
- import { assert, assertUsage } from './assert.js';
9
- import { assertIsNotBrowser } from './assertIsNotBrowser.js';
10
- import { createDebugger } from './debug.js';
11
- import { getGlobalObject } from './getGlobalObject.js';
12
- import { isVitest } from './isVitest.js';
13
- assertIsNotBrowser();
14
- const debug = createDebugger('vike:setup');
15
- const vikeVitePluginLoadedInProductionError = `Loading Vike's Vite plugin (the vike/plugin module) is prohibited in production.`;
16
- const env = getGlobalObject('utils/assertIsNotProductionRuntime.ts', {});
17
- // Called by Vike modules that want to ensure that they aren't loaded by the server runtime in production
18
- function assertIsNotProductionRuntime() {
19
- if (debug.isActivated)
20
- debug('assertIsNotProductionRuntime()', new Error().stack);
21
- env.shouldNotBeProduction = true;
22
- }
23
- // Called by Vite hook configureServer()
24
- function markEnvAsViteDev() {
25
- if (debug.isActivated)
26
- debug('markEnvAsViteDev()', new Error().stack);
27
- env.isViteDev = true;
28
- }
29
- // Called by Vite hook configurePreviewServer()
30
- function markEnvAsVitePreview() {
31
- if (debug.isActivated)
32
- debug('markEnvAsVitePreview()', new Error().stack);
33
- env.isVitePreview = true;
34
- }
35
- // Called by ../node/plugin/index.ts
36
- function markEnvAsVikePluginLoaded() {
37
- if (debug.isActivated)
38
- debug('markEnvAsVikePluginLoaded()', new Error().stack);
39
- env.isVikePluginLoaded = true;
40
- }
41
- // Called by ../node/runtime/index.ts
42
- function assertEnv() {
43
- if (debug.isActivated)
44
- debug('assertEnv()', new Error().stack);
45
- if (isVitest())
46
- return;
47
- const isProduction = !env.isViteDev && !env.isVitePreview;
48
- if (isProduction) {
49
- // Seems to be the only reliable way to assert that the user doesn't load Vike's Vite plugin in production. (The other assert() that uses process.env.NODE_ENV doesn't work if the user sets the process.env.NODE_ENV value later.)
50
- assertUsage(!env.isVikePluginLoaded, vikeVitePluginLoadedInProductionError);
51
- // This assert() is the main goal of this file: it ensures assertIsNotProductionRuntime()
52
- assert(!env.shouldNotBeProduction);
53
- }
54
- else {
55
- // This assert() is obious and boring
56
- assert(env.shouldNotBeProduction);
57
- assert(env.isVikePluginLoaded);
58
- }
59
- }
@@ -1,10 +0,0 @@
1
- export { assertNodeEnv_build };
2
- export { assertNodeEnv_runtime };
3
- export { assertNodeEnv_onVikePluginLoad };
4
- export { handleNodeEnv_prerender };
5
- export { handleNodeEnv_vitePluginVercel };
6
- declare function assertNodeEnv_build(): void;
7
- declare function assertNodeEnv_runtime(isViteDev: boolean): void;
8
- declare function assertNodeEnv_onVikePluginLoad(): void;
9
- declare function handleNodeEnv_prerender(): void;
10
- declare function handleNodeEnv_vitePluginVercel(): void;
@@ -1,103 +0,0 @@
1
- // This file serves the following three purposes:
2
- // 1. Upon building the app, we ensure the right NODE_ENV value is set.
3
- // - Both Vue and React use NODE_ENV for enabling production-specific features:
4
- // - Vue: https://github.com/vuejs/core/blob/f66a75ea75c8aece065b61e2126b4c5b2338aa6e/packages/vue/index.js
5
- // - React: https://github.com/facebook/react/blob/01ab35a9a731dec69995fbd28f3ac7eaad11e183/packages/react/npm/index.js
6
- // - Setting NODE_ENV to 'production' doesn't seem to make any sense in development.
7
- // - With React upon building the app, setting NODE_ENV to a value other than 'production' triggers an error: https://github.com/vikejs/vike/issues/1469#issuecomment-1969301797
8
- // - With Vue upon building the app, NODE_ENV can be set to a value other than 'production', e.g. 'development'.
9
- // 2. Ensure Vite isn't loaded in production.
10
- // - We currently only check whether Vite's development middleware is instantiated (i.e. whether Vite's `createServer()` was called). Is there a way to detect whether Vite's code is loaded?
11
- // 3. Ensure NODE_ENV isn't mistakenly set to a wrong value.
12
- // TODO: to fully implement the aforementioned points we need to implement a [new setting `allowNodeEnv`](https://github.com/vikejs/vike/issues/1528)
13
- export { assertNodeEnv_build };
14
- export { assertNodeEnv_runtime };
15
- export { assertNodeEnv_onVikePluginLoad };
16
- // Vite already handles build
17
- export { handleNodeEnv_prerender };
18
- export { handleNodeEnv_vitePluginVercel };
19
- import pc from '@brillout/picocolors';
20
- import { assertIsNotBrowser } from './assertIsNotBrowser.js';
21
- import { assertWarning } from './assert.js';
22
- import { vikeVitePluginLoadedInProductionError } from './assertIsNotProductionRuntime.js';
23
- assertIsNotBrowser();
24
- function assertNodeEnv_build() {
25
- assertNodeEnvIsNotDev('building');
26
- }
27
- function assertNodeEnv_runtime(isViteDev) {
28
- const nodeEnv = getNodeEnv();
29
- if (nodeEnv === null || nodeEnv === 'test')
30
- return;
31
- const isNodeDev = isNodeEnvDev();
32
- // Calling Vite's createServer() is enough for hasViteDevServer to be true, even without actually adding Vite's development middleware to the server: https://github.com/vikejs/vike/issues/792#issuecomment-1516830759
33
- if (isViteDev === isNodeDev)
34
- return;
35
- const nodeEnvDesc = getNodeEnvDesc();
36
- // TODO: make it assertUsage() again once #1528 is implemented.
37
- const errMsg = `Running ${isViteDev ? pc.cyan('$ vike dev') : 'app in production'} while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`;
38
- assertWarning(false, errMsg, { onlyOnce: true });
39
- }
40
- function assertNodeEnv_onVikePluginLoad() {
41
- const nodeEnv = getNodeEnv();
42
- if (nodeEnv === 'test')
43
- return;
44
- // TODO: make it assertUsage() again once #1528 is implemented.
45
- assertWarning(
46
- /* We can enable this assertion after Vike's CLI is implemented and using Vite's CLI is deprecated (we can then check whether the context is a `$ vike build`).
47
- isNodeEnvDev() || isVikeCliBuild(),
48
- /*/
49
- isNodeEnvDev() || true,
50
- ///*/
51
- [
52
- pc.cyan(`process.env.NODE_ENV === ${JSON.stringify(nodeEnv)}`),
53
- '(which Vike interprets as a non-development environment https://vike.dev/NODE_ENV)',
54
- 'while the vike/plugin module is loaded.',
55
- vikeVitePluginLoadedInProductionError
56
- ].join(' '), { onlyOnce: true });
57
- }
58
- function handleNodeEnv_prerender() {
59
- const assertNodeEnv = () => assertNodeEnvIsNotDev('pre-rendering');
60
- if (getNodeEnv())
61
- assertNodeEnv();
62
- setNodeEnvToProduction();
63
- assertNodeEnv();
64
- }
65
- function handleNodeEnv_vitePluginVercel() {
66
- setNodeEnvToProduction();
67
- }
68
- function getNodeEnv() {
69
- if (typeof process === 'undefined')
70
- return null;
71
- return process.env.NODE_ENV;
72
- }
73
- function setNodeEnvToProduction() {
74
- // The statement `process.env['NODE_ENV'] = 'production'` chokes webpack v4
75
- const proc = process;
76
- const { env } = proc;
77
- env.NODE_ENV = 'production';
78
- }
79
- function isNodeEnvDev() {
80
- const nodeEnv = getNodeEnv();
81
- if (!nodeEnv)
82
- return true;
83
- if (['development', 'dev'].includes(nodeEnv))
84
- return true;
85
- // That's quite aggressive, let's see if some user complains
86
- return false;
87
- }
88
- function getNodeEnvDesc() {
89
- const nodeEnv = getNodeEnv();
90
- const isDev = isNodeEnvDev();
91
- const nodeEnvDesc = `environment is set to be a ${(isDev ? 'development' : 'production')} environment by ${pc.cyan(`process.env.NODE_ENV === ${JSON.stringify(nodeEnv)}`)}`;
92
- return nodeEnvDesc;
93
- }
94
- function assertNodeEnvIsNotDev(operation) {
95
- const isDev = isNodeEnvDev();
96
- if (!isDev)
97
- return;
98
- const nodeEnvDesc = getNodeEnvDesc();
99
- // TODO: make it assertUsage() again once #1528 is implemented.
100
- assertWarning(false, `The ${nodeEnvDesc} which is forbidden upon ${operation}, see https://vike.dev/NODE_ENV`, {
101
- onlyOnce: true
102
- });
103
- }