vike 0.4.218-commit-85af52a → 0.4.218-commit-65f582c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__internal/index.js +2 -3
- package/dist/cjs/node/api/prepareViteApiCall.js +1 -2
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +26 -22
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +111 -181
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -2
- package/dist/cjs/node/prerender/runPrerender.js +73 -32
- package/dist/cjs/node/prerender/utils.js +1 -0
- package/dist/cjs/node/runtime/globalContext.js +31 -5
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
- package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +9 -1
- package/dist/cjs/node/runtime/renderPage.js +21 -22
- package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -2
- package/dist/cjs/shared/getPageFiles/getPageFiles.js +6 -3
- package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +2 -2
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +4 -4
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +22 -14
- package/dist/esm/__internal/index.js +2 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.js +1 -4
- package/dist/esm/client/server-routing-runtime/getPageContext.js +1 -4
- package/dist/esm/node/api/prepareViteApiCall.js +1 -2
- package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -4
- package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +6 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +25 -21
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +1 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +108 -178
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -2
- package/dist/esm/node/prerender/runPrerender.js +75 -34
- package/dist/esm/node/prerender/utils.d.ts +1 -0
- package/dist/esm/node/prerender/utils.js +1 -0
- package/dist/esm/node/runtime/globalContext.d.ts +17 -3
- package/dist/esm/node/runtime/globalContext.js +32 -6
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +27 -42
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -33
- package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/resolveRedirects.js +9 -1
- package/dist/esm/node/runtime/renderPage.js +22 -23
- package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -1
- package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -1
- package/dist/esm/node/shared/assertRuntimeManifest.js +1 -3
- package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +2 -0
- package/dist/esm/shared/getPageFiles/getPageFiles.js +6 -3
- package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +9 -5
- package/dist/esm/shared/page-configs/Config.d.ts +13 -1
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +7 -4
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +2 -2
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -6
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +4 -4
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSetup.js +22 -14
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
|
@@ -4,12 +4,15 @@ export { setPageFilesAsync };
|
|
|
4
4
|
import { assert, unique } from '../utils.js';
|
|
5
5
|
import { parseGlobResults } from './parseGlobResults.js';
|
|
6
6
|
import { getGlobalObject } from '../../utils/getGlobalObject.js';
|
|
7
|
+
import { getPageConfigUserFriendlyNew } from '../page-configs/getPageConfigUserFriendly.js';
|
|
7
8
|
const globalObject = getGlobalObject('setPageFiles.ts', {});
|
|
8
9
|
function setPageFiles(pageFilesExports) {
|
|
9
10
|
const { pageFiles, pageConfigs, pageConfigGlobal } = parseGlobResults(pageFilesExports);
|
|
10
11
|
globalObject.pageFilesAll = pageFiles;
|
|
11
12
|
globalObject.pageConfigs = pageConfigs;
|
|
12
13
|
globalObject.pageConfigGlobal = pageConfigGlobal;
|
|
14
|
+
// TODO/now: re-use this call, instead of calling it twice
|
|
15
|
+
globalObject.globalConfig = getPageConfigUserFriendlyNew(pageConfigGlobal);
|
|
13
16
|
}
|
|
14
17
|
function setPageFilesAsync(getPageFilesExports) {
|
|
15
18
|
globalObject.pageFilesGetter = async () => {
|
|
@@ -30,10 +33,10 @@ async function getPageFilesAll(isClientSide, isProduction) {
|
|
|
30
33
|
await globalObject.pageFilesGetter();
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
|
-
const { pageFilesAll, pageConfigs, pageConfigGlobal } = globalObject;
|
|
34
|
-
assert(pageFilesAll && pageConfigs && pageConfigGlobal);
|
|
36
|
+
const { pageFilesAll, pageConfigs, pageConfigGlobal, globalConfig } = globalObject;
|
|
37
|
+
assert(pageFilesAll && pageConfigs && pageConfigGlobal && globalConfig);
|
|
35
38
|
const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
|
|
36
|
-
return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal };
|
|
39
|
+
return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig };
|
|
37
40
|
}
|
|
38
41
|
function getAllPageIds(allPageFiles, pageConfigs) {
|
|
39
42
|
const fileIds = allPageFiles.filter(({ isDefaultPageFile }) => !isDefaultPageFile).map(({ pageId }) => pageId);
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
export type { PageContextConfig };
|
|
2
|
+
export type { ConfigResolved };
|
|
2
3
|
import type { VikePackages } from '../../VikeNamespace.js';
|
|
3
|
-
import type { ConfigBuiltIn, ImportString } from '../Config.js';
|
|
4
|
+
import type { ConfigBuiltIn, ConfigBuiltInResolved, ImportString } from '../Config.js';
|
|
4
5
|
import type { Combine, IsNotEmpty, XOR5 } from './helpers.js';
|
|
5
|
-
type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
type
|
|
6
|
+
type PageContextConfig = ConfigResolved & (ConfigVikePackagesNotEmptyXor extends true ? ConfigVikePackagesIntersection : ConfigVikePackagesCombined);
|
|
7
|
+
type ConfigUnresolved = WithoutImportString<ConfigBuiltIn & Vike.Config>;
|
|
8
|
+
type ConfigResolvedOnly = ConfigBuiltInResolved & Vike.ConfigResolved;
|
|
9
|
+
type ConfigResolved = ConfigResolvedOnly & Omit<ConfigUnresolved, keyof ConfigResolvedOnly>;
|
|
9
10
|
type ConfigVikePackagesIntersection = VikePackages.ConfigVikeReact & VikePackages.ConfigVikeVue & VikePackages.ConfigVikeSolid & VikePackages.ConfigVikeSvelte & VikePackages.ConfigVikeAngular;
|
|
10
11
|
type ConfigVikePackagesCombined = Combine<VikePackages.ConfigVikeReact, Combine<VikePackages.ConfigVikeVue, Combine<VikePackages.ConfigVikeSolid, Combine<VikePackages.ConfigVikeSvelte, VikePackages.ConfigVikeAngular>>>>;
|
|
11
12
|
type ConfigVikePackagesNotEmptyXor = XOR5<IsNotEmpty<VikePackages.ConfigVikeReact>, IsNotEmpty<VikePackages.ConfigVikeVue>, IsNotEmpty<VikePackages.ConfigVikeSolid>, IsNotEmpty<VikePackages.ConfigVikeSvelte>, IsNotEmpty<VikePackages.ConfigVikeAngular>>;
|
|
13
|
+
type WithoutImportString<T> = {
|
|
14
|
+
[K in keyof T]: Exclude<T[K], ImportString>;
|
|
15
|
+
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export type { Config };
|
|
2
2
|
export type { ConfigBuiltIn };
|
|
3
|
+
export type { ConfigBuiltInResolved };
|
|
3
4
|
export type { ConfigNameBuiltIn };
|
|
5
|
+
export type { ConfigNameGlobal };
|
|
4
6
|
export type { ConfigMeta };
|
|
5
7
|
export type { HookName };
|
|
6
8
|
export type { HookNamePage };
|
|
@@ -44,7 +46,8 @@ type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
|
|
|
44
46
|
type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
|
|
45
47
|
type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart';
|
|
46
48
|
type HookNameOldDesign = 'render' | 'prerender';
|
|
47
|
-
type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
|
|
49
|
+
type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
|
|
50
|
+
type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
|
|
48
51
|
type Config = ConfigBuiltIn & Vike.Config & (VikePackages.ConfigVikeReact | VikePackages.ConfigVikeVue | VikePackages.ConfigVikeSolid | VikePackages.ConfigVikeSvelte | VikePackages.ConfigVikeAngular);
|
|
49
52
|
/** Hook for fetching data.
|
|
50
53
|
*
|
|
@@ -350,6 +353,11 @@ type ConfigBuiltIn = {
|
|
|
350
353
|
* https://vite.dev/config/
|
|
351
354
|
*/
|
|
352
355
|
vite?: InlineConfig;
|
|
356
|
+
/** Permanent redirections (HTTP status code 301)
|
|
357
|
+
*
|
|
358
|
+
* https://vike.dev/redirects
|
|
359
|
+
*/
|
|
360
|
+
redirects?: Record<string, string>;
|
|
353
361
|
/**
|
|
354
362
|
* @experimental DON'T USE: the API *will* have breaking changes upon any minor version release.
|
|
355
363
|
*
|
|
@@ -396,5 +404,9 @@ type ConfigBuiltIn = {
|
|
|
396
404
|
*/
|
|
397
405
|
keepScrollPosition?: KeepScrollPosition;
|
|
398
406
|
};
|
|
407
|
+
type ConfigBuiltInResolved = {
|
|
408
|
+
passToClient?: string[][];
|
|
409
|
+
redirects?: Record<string, string>[];
|
|
410
|
+
};
|
|
399
411
|
type ConfigMeta = Record<string, ConfigDefinition>;
|
|
400
412
|
type ImportString = `import:${string}`;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { getPageConfigUserFriendly };
|
|
2
2
|
export { getPageConfigUserFriendlyNew };
|
|
3
|
+
export type { ConfigUserFriendly };
|
|
3
4
|
export type { PageConfigUserFriendly };
|
|
4
5
|
export type { Source };
|
|
5
6
|
export type { Sources };
|
|
@@ -10,6 +11,7 @@ import type { FileType } from '../getPageFiles/fileTypes.js';
|
|
|
10
11
|
import type { PageFile } from '../getPageFiles/getPageFileObject.js';
|
|
11
12
|
import type { ConfigValues, PageConfigRuntimeLoaded } from './PageConfig.js';
|
|
12
13
|
import { type ConfigDefinedAtOptional } from './getConfigDefinedAt.js';
|
|
14
|
+
import type { ConfigResolved } from './Config/PageContextConfig.js';
|
|
13
15
|
type ExportsAll = Record<string, {
|
|
14
16
|
exportValue: unknown;
|
|
15
17
|
exportSource: string;
|
|
@@ -72,13 +74,14 @@ type SourceConfigsComputed = {
|
|
|
72
74
|
value: unknown;
|
|
73
75
|
};
|
|
74
76
|
declare function getPageConfigUserFriendly(pageFiles: PageFile[], pageConfig: PageConfigRuntimeLoaded | null): PageConfigUserFriendly;
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}): {
|
|
78
|
-
config: Record<string, unknown>;
|
|
77
|
+
type ConfigUserFriendly = {
|
|
78
|
+
config: ConfigResolved;
|
|
79
79
|
configEntries: ConfigEntries;
|
|
80
80
|
exportsAll: ExportsAll;
|
|
81
81
|
source: Source;
|
|
82
82
|
sources: Sources;
|
|
83
83
|
from: From;
|
|
84
84
|
};
|
|
85
|
+
declare function getPageConfigUserFriendlyNew(pageConfig: {
|
|
86
|
+
configValues: ConfigValues;
|
|
87
|
+
}): ConfigUserFriendly;
|
|
@@ -78,8 +78,8 @@ function getPageConfigUserFriendly(pageFiles, pageConfig) {
|
|
|
78
78
|
// V1 design
|
|
79
79
|
function getPageConfigUserFriendlyNew(pageConfig) {
|
|
80
80
|
const config = {};
|
|
81
|
-
const configEntries = {};
|
|
82
|
-
const exportsAll = {};
|
|
81
|
+
const configEntries = {};
|
|
82
|
+
const exportsAll = {};
|
|
83
83
|
const source = {};
|
|
84
84
|
const sources = {};
|
|
85
85
|
const from = {
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
export { serializeConfigValues };
|
|
2
2
|
export { getConfigValuesBase };
|
|
3
3
|
import type { ConfigEnvInternal, ConfigValueSource, DefinedAtFile, PageConfigBuildTime, PageConfigGlobalBuildTime } from '../PageConfig.js';
|
|
4
|
-
declare function serializeConfigValues(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, importStatements: string[], isEnvMatch: (configEnv: ConfigEnvInternal) => boolean,
|
|
5
|
-
|
|
6
|
-
}, tabspace: string): string[];
|
|
7
|
-
declare function getConfigValuesBase(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, { isEager }?: {
|
|
8
|
-
isEager?: boolean;
|
|
9
|
-
}): ConfigValuesBase;
|
|
4
|
+
declare function serializeConfigValues(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, importStatements: string[], isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, tabspace: string, isEager: boolean | null): string[];
|
|
5
|
+
declare function getConfigValuesBase(pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime, isEnvMatch: (configEnv: ConfigEnvInternal) => boolean, isEager: boolean | null): ConfigValuesBase;
|
|
10
6
|
type ConfigValuesBase = ({
|
|
11
7
|
configValueBase: {
|
|
12
8
|
type: 'computed';
|
|
@@ -13,10 +13,10 @@ const REPLACE_ME_AFTER = '__VIKE__REPLACE_ME_AFTER__';
|
|
|
13
13
|
// - vike/shared/page-configs/serialize/parsePageConfigs.ts
|
|
14
14
|
// - parsePageConfigs() is loaded on both the client- and server-side.
|
|
15
15
|
assertIsNotProductionRuntime();
|
|
16
|
-
function serializeConfigValues(pageConfig, importStatements, isEnvMatch,
|
|
16
|
+
function serializeConfigValues(pageConfig, importStatements, isEnvMatch, tabspace, isEager) {
|
|
17
17
|
const lines = [];
|
|
18
18
|
tabspace += ' ';
|
|
19
|
-
getConfigValuesBase(pageConfig, isEnvMatch,
|
|
19
|
+
getConfigValuesBase(pageConfig, isEnvMatch, isEager).forEach((entry) => {
|
|
20
20
|
if (entry.configValueBase.type === 'computed') {
|
|
21
21
|
assert('value' in entry); // Help TS
|
|
22
22
|
const { configValueBase, value, configName } = entry;
|
|
@@ -165,7 +165,7 @@ function logJsonSerializeError(err, configName, definedAtData) {
|
|
|
165
165
|
assert(configValueFilePathToShowToUser);
|
|
166
166
|
assertUsage(false, `${pc.cyan(configName)} defined by ${configValueFilePathToShowToUser} must be defined over a so-called "pointer import", see https://vike.dev/config#pointer-imports`);
|
|
167
167
|
}
|
|
168
|
-
function getConfigValuesBase(pageConfig, isEnvMatch,
|
|
168
|
+
function getConfigValuesBase(pageConfig, isEnvMatch, isEager) {
|
|
169
169
|
const fromComputed = Object.entries(pageConfig.configValuesComputed ?? {}).map(([configName, valueInfo]) => {
|
|
170
170
|
if (!isEnvMatch(valueInfo.configEnv))
|
|
171
171
|
return 'SKIP';
|
|
@@ -181,7 +181,7 @@ function getConfigValuesBase(pageConfig, isEnvMatch, { isEager } = {}) {
|
|
|
181
181
|
const fromSources = Object.entries(pageConfig.configValueSources).map(([configName, sources]) => {
|
|
182
182
|
const configDef = pageConfig.configDefinitions[configName];
|
|
183
183
|
assert(configDef);
|
|
184
|
-
if (isEager !==
|
|
184
|
+
if (isEager !== null && isEager !== !!configDef.eager)
|
|
185
185
|
return 'SKIP';
|
|
186
186
|
if (!configDef.cumulative) {
|
|
187
187
|
const source = sources[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.218-commit-
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.218-commit-65f582c";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.218-commit-
|
|
2
|
+
export const PROJECT_VERSION = '0.4.218-commit-65f582c';
|
|
@@ -30,7 +30,7 @@ function onSetupRuntime() {
|
|
|
30
30
|
return;
|
|
31
31
|
if (!isViteLoaded()) {
|
|
32
32
|
// TODO: make it assertUsage() again once https://github.com/vikejs/vike/issues/1528 is implemented.
|
|
33
|
-
assertWarning(!isNodeEnvDev(), `The ${getEnvDescription()}, which
|
|
33
|
+
assertWarning(!isNodeEnvDev(), `The ${getEnvDescription()}, which is contradictory because the environment seems to be a production environment (Vite isn't loaded), see https://vike.dev/NODE_ENV`, { onlyOnce: true });
|
|
34
34
|
assertUsage(!setup.vikeVitePlugin, "Loading Vike's Vite plugin (the vike/plugin module) is prohibited in production.");
|
|
35
35
|
// This assert() one of the main goal of this file: it ensures assertIsNotProductionRuntime()
|
|
36
36
|
assert(!setup.shouldNotBeProduction);
|
|
@@ -57,7 +57,7 @@ function onSetupBuild() {
|
|
|
57
57
|
}
|
|
58
58
|
function onSetupPrerender() {
|
|
59
59
|
markSetup_isPrerendering();
|
|
60
|
-
if (
|
|
60
|
+
if (getNodeEnv())
|
|
61
61
|
assertUsageNodeEnvIsNotDev('pre-rendering');
|
|
62
62
|
setNodeEnvProduction();
|
|
63
63
|
}
|
|
@@ -66,7 +66,7 @@ function isViteLoaded() {
|
|
|
66
66
|
return setup.viteDevServer || setup.vitePreviewServer || setup.isViteDev !== undefined;
|
|
67
67
|
}
|
|
68
68
|
function isTest() {
|
|
69
|
-
return isVitest() ||
|
|
69
|
+
return isVitest() || isNodeEnv('test');
|
|
70
70
|
}
|
|
71
71
|
// Called by Vite hook configureServer()
|
|
72
72
|
function markSetup_viteDevServer() {
|
|
@@ -105,26 +105,34 @@ function assertUsageNodeEnvIsNotDev(operation) {
|
|
|
105
105
|
assertWarning(false, `The ${getEnvDescription()} which is forbidden upon ${operation}, see https://vike.dev/NODE_ENV`, { onlyOnce: true });
|
|
106
106
|
}
|
|
107
107
|
function getEnvDescription() {
|
|
108
|
-
const
|
|
109
|
-
const
|
|
110
|
-
const envType = `${(isDev ? 'development' : 'production')} environment`;
|
|
111
|
-
const nodeEnvDesc = `environment is set to be a ${pc.bold(envType)} by ${pc.cyan(`process.env.NODE_ENV===${JSON.stringify(nodeEnv)}`)}`;
|
|
108
|
+
const envType = `${(isNodeEnvDev() ? 'development' : 'production')} environment`;
|
|
109
|
+
const nodeEnvDesc = `environment is set to be a ${pc.bold(envType)} by ${pc.cyan(`process.env.NODE_ENV===${JSON.stringify(getNodeEnv())}`)}`;
|
|
112
110
|
return nodeEnvDesc;
|
|
113
111
|
}
|
|
114
112
|
function isNodeEnvDev() {
|
|
115
|
-
const nodeEnv =
|
|
113
|
+
const nodeEnv = getNodeEnv();
|
|
116
114
|
// That's quite strict, let's see if some user complains
|
|
117
|
-
return !nodeEnv || ['development', 'dev']
|
|
115
|
+
return !nodeEnv || isNodeEnv(['development', 'dev']);
|
|
118
116
|
}
|
|
119
|
-
function
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
return
|
|
117
|
+
function isNodeEnv(value) {
|
|
118
|
+
const values = Array.isArray(value) ? value : [value];
|
|
119
|
+
const nodeEnv = getNodeEnv();
|
|
120
|
+
return nodeEnv !== undefined && values.includes(nodeEnv.toLowerCase());
|
|
121
|
+
}
|
|
122
|
+
function getNodeEnv() {
|
|
123
|
+
let val;
|
|
124
|
+
try {
|
|
125
|
+
val = process.env.NODE_ENV;
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
return val;
|
|
123
131
|
}
|
|
124
132
|
function setNodeEnvProduction() {
|
|
125
133
|
// The statement `process.env['NODE_ENV'] = 'production'` chokes webpack v4
|
|
126
134
|
const proc = process;
|
|
127
135
|
const { env } = proc;
|
|
128
136
|
env.NODE_ENV = 'production';
|
|
129
|
-
assert(
|
|
137
|
+
assert(isNodeEnv('production'));
|
|
130
138
|
}
|