vike 0.4.225-commit-2b7971f → 0.4.225-commit-b8fc36e
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/node/api/build.js +7 -7
- package/dist/cjs/node/api/dev.js +2 -2
- package/dist/cjs/node/api/prepareViteApiCall.js +42 -29
- package/dist/cjs/node/api/prerender.js +2 -2
- package/dist/cjs/node/api/preview.js +2 -2
- package/dist/cjs/node/api/utils.js +1 -0
- package/dist/cjs/node/cli/parseCli.js +10 -4
- package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +19 -6
- package/dist/cjs/node/plugin/shared/getEnvVarObject.js +7 -0
- package/dist/cjs/node/prerender/runPrerender.js +2 -2
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/pick.js +12 -0
- package/dist/esm/node/api/build.js +7 -7
- package/dist/esm/node/api/dev.js +2 -2
- package/dist/esm/node/api/prepareViteApiCall.d.ts +1 -1
- package/dist/esm/node/api/prepareViteApiCall.js +44 -31
- package/dist/esm/node/api/prerender.js +2 -2
- package/dist/esm/node/api/preview.js +2 -2
- package/dist/esm/node/api/utils.d.ts +1 -0
- package/dist/esm/node/api/utils.js +1 -0
- package/dist/esm/node/cli/parseCli.js +10 -4
- package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +8 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +19 -6
- package/dist/esm/node/plugin/shared/getEnvVarObject.js +7 -0
- package/dist/esm/node/prerender/runPrerender.js +2 -2
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/esm/shared/page-configs/Config.d.ts +6 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/pick.d.ts +1 -0
- package/dist/esm/utils/pick.js +9 -0
- package/package.json +1 -1
|
@@ -16,13 +16,13 @@ const utils_js_1 = require("./utils.js");
|
|
|
16
16
|
* https://vike.dev/api#build
|
|
17
17
|
*/
|
|
18
18
|
async function build(options = {}) {
|
|
19
|
-
const {
|
|
19
|
+
const { viteConfigFromUserEnhanced, vikeConfig } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'build');
|
|
20
20
|
// Pass it to pluginAutoFullBuild()
|
|
21
|
-
if (
|
|
22
|
-
|
|
21
|
+
if (viteConfigFromUserEnhanced)
|
|
22
|
+
viteConfigFromUserEnhanced._viteConfigFromUserEnhanced = viteConfigFromUserEnhanced;
|
|
23
23
|
if (vikeConfig.global.config.vite6BuilderApp) {
|
|
24
24
|
(0, utils_js_1.assertVersion)('Vite', vite_1.version, '6.0.0');
|
|
25
|
-
const builder = await (0, vite_1.createBuilder)(
|
|
25
|
+
const builder = await (0, vite_1.createBuilder)(viteConfigFromUserEnhanced);
|
|
26
26
|
// See Vite plugin vike:build:pluginBuildApp
|
|
27
27
|
await builder.buildApp();
|
|
28
28
|
}
|
|
@@ -35,14 +35,14 @@ async function build(options = {}) {
|
|
|
35
35
|
// > See: https://github.com/vikejs/vike/blob/c6c7533a56b3a16fc43ed644fc5c10c02d0ff375/vike/node/plugin/plugins/autoFullBuild.ts#L98
|
|
36
36
|
// > We purposely don't start the pre-rendering in this `build()` function but in a Rollup hook instead.
|
|
37
37
|
// > Rationale: https://github.com/vikejs/vike/issues/2123
|
|
38
|
-
await (0, vite_1.build)(
|
|
38
|
+
await (0, vite_1.build)(viteConfigFromUserEnhanced);
|
|
39
39
|
// After pre-rendering, when using the Vike CLI, the process is forcefully exited at the end of the buildVite() call above.
|
|
40
40
|
if ((0, context_js_1.isVikeCli)() && (0, context_js_2.isPrerendering)())
|
|
41
41
|
(0, assert_1.default)(false);
|
|
42
42
|
}
|
|
43
43
|
return {
|
|
44
|
-
/* We don't return `viteConfig` because `
|
|
45
|
-
viteConfig:
|
|
44
|
+
/* We don't return `viteConfig` because `viteConfigFromUserEnhanced` is `InlineConfig` not `ResolvedConfig`
|
|
45
|
+
viteConfig: viteConfigFromUserEnhanced,
|
|
46
46
|
*/
|
|
47
47
|
};
|
|
48
48
|
}
|
package/dist/cjs/node/api/dev.js
CHANGED
|
@@ -9,8 +9,8 @@ const vite_1 = require("vite");
|
|
|
9
9
|
* https://vike.dev/api#dev
|
|
10
10
|
*/
|
|
11
11
|
async function dev(options = {}) {
|
|
12
|
-
const {
|
|
13
|
-
const server = await (0, vite_1.createServer)(
|
|
12
|
+
const { viteConfigFromUserEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'dev');
|
|
13
|
+
const server = await (0, vite_1.createServer)(viteConfigFromUserEnhanced);
|
|
14
14
|
return {
|
|
15
15
|
viteServer: server,
|
|
16
16
|
viteConfig: server.config
|
|
@@ -52,34 +52,36 @@ const globalObject = (0, utils_js_1.getGlobalObject)('api/prepareViteApiCall.ts'
|
|
|
52
52
|
async function prepareViteApiCall(options, operation) {
|
|
53
53
|
clear();
|
|
54
54
|
(0, context_js_1.setContextApiOperation)(operation, options);
|
|
55
|
-
const
|
|
56
|
-
return
|
|
55
|
+
const viteConfigFromUserApiOptions = options.viteConfig;
|
|
56
|
+
return resolveConfigs(viteConfigFromUserApiOptions, operation);
|
|
57
57
|
}
|
|
58
58
|
// For subsequent API calls, e.g. calling prerender() after build()
|
|
59
59
|
function clear() {
|
|
60
60
|
(0, context_js_1.clearContextApiOperation)();
|
|
61
61
|
(0, globalContext_js_1.clearGlobalContext)();
|
|
62
62
|
}
|
|
63
|
-
async function
|
|
64
|
-
const viteInfo = await getViteInfo(
|
|
65
|
-
await assertViteRoot2(viteInfo.root, viteInfo.
|
|
63
|
+
async function resolveConfigs(viteConfigFromUserApiOptions, operation) {
|
|
64
|
+
const viteInfo = await getViteInfo(viteConfigFromUserApiOptions, operation);
|
|
65
|
+
await assertViteRoot2(viteInfo.root, viteInfo.viteConfigFromUserEnhanced, operation);
|
|
66
66
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig2)(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
|
|
67
|
-
const
|
|
67
|
+
const viteConfigFromUserEnhanced = applyVikeViteConfig(viteInfo.viteConfigFromUserEnhanced, vikeConfig);
|
|
68
68
|
return {
|
|
69
69
|
vikeConfig,
|
|
70
|
-
|
|
70
|
+
viteConfigFromUserEnhanced
|
|
71
71
|
};
|
|
72
72
|
}
|
|
73
|
-
|
|
73
|
+
// Apply +vite
|
|
74
|
+
// - For example, Vike extensions adding Vite plugins
|
|
75
|
+
function applyVikeViteConfig(viteConfigFromUserEnhanced, vikeConfig) {
|
|
74
76
|
const viteConfigs = vikeConfig.global._from.configsCumulative.vite;
|
|
75
77
|
if (!viteConfigs)
|
|
76
|
-
return
|
|
78
|
+
return viteConfigFromUserEnhanced;
|
|
77
79
|
viteConfigs.values.forEach((v) => {
|
|
78
80
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(v.value), `${v.definedAt} should be an object`);
|
|
79
|
-
|
|
81
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, v.value);
|
|
80
82
|
(0, utils_js_1.assertUsage)(!findVikeVitePlugin(v.value), "Using the +vite setting to add Vike's Vite plugin is forbidden");
|
|
81
83
|
});
|
|
82
|
-
return
|
|
84
|
+
return viteConfigFromUserEnhanced;
|
|
83
85
|
}
|
|
84
86
|
async function getViteRoot(operation) {
|
|
85
87
|
if (!globalObject.root)
|
|
@@ -87,19 +89,30 @@ async function getViteRoot(operation) {
|
|
|
87
89
|
(0, utils_js_1.assert)(globalObject.root);
|
|
88
90
|
return globalObject.root;
|
|
89
91
|
}
|
|
90
|
-
async function getViteInfo(
|
|
91
|
-
let
|
|
92
|
+
async function getViteInfo(viteConfigFromUserApiOptions, operation) {
|
|
93
|
+
let viteConfigFromUserEnhanced = viteConfigFromUserApiOptions;
|
|
92
94
|
// Precedence:
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
//
|
|
95
|
+
// 1) viteConfigFromUserEnvVar (highest precendence)
|
|
96
|
+
// 2) viteConfigFromUserVikeConfig
|
|
97
|
+
// 2) viteConfigFromUserApiOptions
|
|
98
|
+
// 3) viteConfigFromUserViteFile (lowest precendence)
|
|
99
|
+
// Resolve Vike's +mode setting
|
|
100
|
+
{
|
|
101
|
+
const viteConfigFromUserVikeConfig = (0, utils_js_1.pick)((0, getVikeConfig_js_1.getVikeConfigFromCliOrEnv)().vikeConfigFromCliOrEnv, ['mode']);
|
|
102
|
+
if (Object.keys(viteConfigFromUserVikeConfig).length > 0) {
|
|
103
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserVikeConfig);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Resolve VITE_CONFIG
|
|
96
107
|
const viteConfigFromUserEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VITE_CONFIG');
|
|
97
|
-
if (viteConfigFromUserEnvVar)
|
|
98
|
-
|
|
99
|
-
|
|
108
|
+
if (viteConfigFromUserEnvVar) {
|
|
109
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserEnvVar);
|
|
110
|
+
}
|
|
111
|
+
// Resolve vite.config.js
|
|
112
|
+
const viteConfigFromUserViteFile = await loadViteConfigFile(viteConfigFromUserEnhanced, operation);
|
|
100
113
|
// Correct precedence, replicates Vite:
|
|
101
114
|
// https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1001
|
|
102
|
-
const viteConfigResolved = (0, vite_1.mergeConfig)(viteConfigFromUserViteFile ?? {},
|
|
115
|
+
const viteConfigResolved = (0, vite_1.mergeConfig)(viteConfigFromUserViteFile ?? {}, viteConfigFromUserEnhanced ?? {});
|
|
103
116
|
const root = normalizeViteRoot(viteConfigResolved.root ?? process.cwd());
|
|
104
117
|
globalObject.root = root;
|
|
105
118
|
// - Find options `vike(options)` set in vite.config.js
|
|
@@ -114,16 +127,16 @@ async function getViteInfo(viteConfigFromOptions, operation) {
|
|
|
114
127
|
// Add Vike to plugins if not present.
|
|
115
128
|
// Using a dynamic import because the script calling the Vike API may not live in the same place as vite.config.js, thus vike/plugin may resolved to two different node_modules/vike directories.
|
|
116
129
|
const { plugin: vikePlugin } = await Promise.resolve().then(() => __importStar(require('../plugin/index.js')));
|
|
117
|
-
|
|
118
|
-
...
|
|
119
|
-
plugins: [...(
|
|
130
|
+
viteConfigFromUserEnhanced = {
|
|
131
|
+
...viteConfigFromUserEnhanced,
|
|
132
|
+
plugins: [...(viteConfigFromUserEnhanced?.plugins ?? []), vikePlugin()]
|
|
120
133
|
};
|
|
121
|
-
const res = findVikeVitePlugin(
|
|
134
|
+
const res = findVikeVitePlugin(viteConfigFromUserEnhanced);
|
|
122
135
|
(0, utils_js_1.assert)(res);
|
|
123
136
|
vikeVitePluginOptions = res.vikeVitePluginOptions;
|
|
124
137
|
}
|
|
125
138
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
126
|
-
return { root, vikeVitePluginOptions,
|
|
139
|
+
return { root, vikeVitePluginOptions, viteConfigFromUserEnhanced };
|
|
127
140
|
}
|
|
128
141
|
function findVikeVitePlugin(viteConfig) {
|
|
129
142
|
let vikeVitePluginOptions;
|
|
@@ -141,8 +154,8 @@ function findVikeVitePlugin(viteConfig) {
|
|
|
141
154
|
return { vikeVitePluginOptions };
|
|
142
155
|
}
|
|
143
156
|
// Copied from https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L961-L1005
|
|
144
|
-
async function loadViteConfigFile(
|
|
145
|
-
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(
|
|
157
|
+
async function loadViteConfigFile(viteConfigFromUserApiOptions, operation) {
|
|
158
|
+
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(viteConfigFromUserApiOptions, operation);
|
|
146
159
|
let config = inlineConfig;
|
|
147
160
|
let mode = inlineConfig.mode || defaultMode;
|
|
148
161
|
const configEnv = {
|
|
@@ -174,8 +187,8 @@ function normalizeViteRoot(root) {
|
|
|
174
187
|
path_1.default.resolve(root));
|
|
175
188
|
}
|
|
176
189
|
const errMsg = `A Vite plugin is modifying Vite's setting ${picocolors_1.default.cyan('root')} which is forbidden`;
|
|
177
|
-
async function assertViteRoot2(root,
|
|
178
|
-
const args = getResolveConfigArgs(
|
|
190
|
+
async function assertViteRoot2(root, viteConfigFromUserEnhanced, operation) {
|
|
191
|
+
const args = getResolveConfigArgs(viteConfigFromUserEnhanced, operation);
|
|
179
192
|
// We can eventually this resolveConfig() call (along with removing the whole assertViteRoot2() function which is redundant with the assertViteRoot() function) so that Vike doesn't make any resolveConfig() (except for pre-rendering which is required). But let's keep it for now, just to see whether calling resolveConfig() can be problematic.
|
|
180
193
|
const viteConfigResolved = await (0, vite_1.resolveConfig)(...args);
|
|
181
194
|
(0, utils_js_1.assertUsage)(normalizeViteRoot(viteConfigResolved.root) === normalizeViteRoot(root), errMsg);
|
|
@@ -10,8 +10,8 @@ const prepareViteApiCall_js_1 = require("./prepareViteApiCall.js");
|
|
|
10
10
|
* https://vike.dev/api#prerender
|
|
11
11
|
*/
|
|
12
12
|
async function prerender(options = {}) {
|
|
13
|
-
const {
|
|
14
|
-
options.viteConfig =
|
|
13
|
+
const { viteConfigFromUserEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'prerender');
|
|
14
|
+
options.viteConfig = viteConfigFromUserEnhanced;
|
|
15
15
|
const { viteConfig } = await (0, runPrerender_js_1.runPrerenderFromAPI)(options);
|
|
16
16
|
return {
|
|
17
17
|
viteConfig
|
|
@@ -9,8 +9,8 @@ const vite_1 = require("vite");
|
|
|
9
9
|
* https://vike.dev/api#preview
|
|
10
10
|
*/
|
|
11
11
|
async function preview(options = {}) {
|
|
12
|
-
const {
|
|
13
|
-
const server = await (0, vite_1.preview)(
|
|
12
|
+
const { viteConfigFromUserEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'preview');
|
|
13
|
+
const server = await (0, vite_1.preview)(viteConfigFromUserEnhanced);
|
|
14
14
|
return {
|
|
15
15
|
viteServer: server,
|
|
16
16
|
viteConfig: server.config
|
|
@@ -23,3 +23,4 @@ __exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
|
23
23
|
__exportStar(require("../../utils/path.js"), exports);
|
|
24
24
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
25
25
|
__exportStar(require("../../utils/assertVersion.js"), exports);
|
|
26
|
+
__exportStar(require("../../utils/pick.js"), exports);
|
|
@@ -11,7 +11,7 @@ const commands = [
|
|
|
11
11
|
{ name: 'dev', desc: 'Start development server' },
|
|
12
12
|
{ name: 'build', desc: 'Build for production' },
|
|
13
13
|
{ name: 'preview', desc: 'Start preview server using production build (only works for SSG apps)' },
|
|
14
|
-
{ name: 'prerender', desc: 'Pre-render pages (only needed when
|
|
14
|
+
{ name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' }
|
|
15
15
|
];
|
|
16
16
|
function parseCli() {
|
|
17
17
|
const command = getCommand();
|
|
@@ -62,10 +62,16 @@ function showHelp() {
|
|
|
62
62
|
`vike@${utils_js_1.PROJECT_VERSION}`,
|
|
63
63
|
'',
|
|
64
64
|
'Usage:',
|
|
65
|
-
...[...commands, { name: '-v', desc: "Print Vike's installed version" }].map((c) => ` ${picocolors_1.default.dim('$')} ${picocolors_1.default.
|
|
65
|
+
...[...commands, { name: '-v', desc: "Print Vike's installed version" }].map((c) => ` ${picocolors_1.default.dim('$')} vike ${c.name.startsWith('-') ? picocolors_1.default.cyan(`${c.name}`) : picocolors_1.default.bold(`${c.name}`)}${' '.repeat(nameMaxLength - c.name.length)}${TAB}${picocolors_1.default.dim(`# ${c.desc}`)}`),
|
|
66
66
|
'',
|
|
67
|
-
|
|
68
|
-
`
|
|
67
|
+
'Common CLI options:',
|
|
68
|
+
[`vike dev ${picocolors_1.default.cyan('--host')}`, `vike dev ${picocolors_1.default.cyan('--port')} 80`, `vike build ${picocolors_1.default.cyan('--mode')} staging`]
|
|
69
|
+
.map((o) => ` ${picocolors_1.default.dim('$')} ${o}`)
|
|
70
|
+
.join('\n'),
|
|
71
|
+
'',
|
|
72
|
+
`More Vike settings can be passed over the ${picocolors_1.default.cyan('VIKE_CONFIG')} environment variable or as ${picocolors_1.default.cyan('CLI options')}.`,
|
|
73
|
+
`More Vite settings can be passed over the ${picocolors_1.default.cyan('VITE_CONFIG')} environment variable.`,
|
|
74
|
+
``,
|
|
69
75
|
`See ${picocolors_1.default.underline('https://vike.dev/cli')} for more information.`
|
|
70
76
|
].join('\n'));
|
|
71
77
|
process.exit(1);
|
|
@@ -129,8 +129,8 @@ function isPrerenderForceExit() {
|
|
|
129
129
|
}
|
|
130
130
|
function getFullBuildInlineConfig(config) {
|
|
131
131
|
const configFromCli = !(0, isViteCliCall_js_1.isViteCliCall)() ? null : (0, isViteCliCall_js_1.getViteConfigFromCli)();
|
|
132
|
-
if (config.
|
|
133
|
-
return config.
|
|
132
|
+
if (config._viteConfigFromUserEnhanced) {
|
|
133
|
+
return config._viteConfigFromUserEnhanced;
|
|
134
134
|
}
|
|
135
135
|
else {
|
|
136
136
|
return {
|
|
@@ -10,6 +10,7 @@ exports.reloadVikeConfig = reloadVikeConfig;
|
|
|
10
10
|
exports.isV1Design = isV1Design;
|
|
11
11
|
exports.getConfVal = getConfVal;
|
|
12
12
|
exports.getConfigDefinitionOptional = getConfigDefinitionOptional;
|
|
13
|
+
exports.getVikeConfigFromCliOrEnv = getVikeConfigFromCliOrEnv;
|
|
13
14
|
exports.isOverriden = isOverriden;
|
|
14
15
|
const utils_js_1 = require("../../../utils.js");
|
|
15
16
|
const configDefinitionsBuiltIn_js_1 = require("./getVikeConfig/configDefinitionsBuiltIn.js");
|
|
@@ -395,15 +396,14 @@ function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
|
395
396
|
if (apiOperation?.options.vikeConfig) {
|
|
396
397
|
addSources(apiOperation.options.vikeConfig, { definedBy: 'api', operation: apiOperation.operation }, false);
|
|
397
398
|
}
|
|
399
|
+
const { configFromCliOptions, configFromEnvVar } = getVikeConfigFromCliOrEnv();
|
|
398
400
|
// Vike CLI options
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
addSources(cliOptions, { definedBy: 'cli' }, true);
|
|
401
|
+
if (configFromCliOptions) {
|
|
402
|
+
addSources(configFromCliOptions, { definedBy: 'cli' }, true);
|
|
402
403
|
}
|
|
403
404
|
// VIKE_CONFIG [highest precedence]
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
addSources(configFromEnv, { definedBy: 'env' }, false);
|
|
405
|
+
if (configFromEnvVar) {
|
|
406
|
+
addSources(configFromEnvVar, { definedBy: 'env' }, false);
|
|
407
407
|
}
|
|
408
408
|
return;
|
|
409
409
|
function addSources(configValues, definedBy, exitOnError) {
|
|
@@ -416,6 +416,19 @@ function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
|
416
416
|
});
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
|
+
function getVikeConfigFromCliOrEnv() {
|
|
420
|
+
const configFromCliOptions = (0, context_js_2.getCliOptions)();
|
|
421
|
+
const configFromEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CONFIG');
|
|
422
|
+
const vikeConfigFromCliOrEnv = {
|
|
423
|
+
...configFromCliOptions, // Lower precedence
|
|
424
|
+
...configFromEnvVar // Higher precedence
|
|
425
|
+
};
|
|
426
|
+
return {
|
|
427
|
+
vikeConfigFromCliOrEnv,
|
|
428
|
+
configFromCliOptions,
|
|
429
|
+
configFromEnvVar
|
|
430
|
+
};
|
|
431
|
+
}
|
|
419
432
|
function getSourceNonConfigFile(configName, value, definedAt) {
|
|
420
433
|
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn), configName));
|
|
421
434
|
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn[configName];
|
|
@@ -23,8 +23,15 @@ function parseJson5(valueStr, what) {
|
|
|
23
23
|
value = json5_1.default.parse(valueStr);
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
|
+
if (isNotJavaScriptLike(valueStr)) {
|
|
27
|
+
// Interpret as string
|
|
28
|
+
return valueStr;
|
|
29
|
+
}
|
|
26
30
|
console.error(err);
|
|
27
31
|
(0, utils_js_1.assertUsage)(false, `Cannot parse ${picocolors_1.default.cyan(what)} (see error above) because it's set to the following which isn't a valid JSON5 string: ${picocolors_1.default.bold(valueStr)}`);
|
|
28
32
|
}
|
|
29
33
|
return value;
|
|
30
34
|
}
|
|
35
|
+
function isNotJavaScriptLike(valueStr) {
|
|
36
|
+
return ![':', ',', '{', '}', '(', ')'].some((c) => valueStr.includes(c));
|
|
37
|
+
}
|
|
@@ -76,8 +76,8 @@ async function runPrerenderFromAPI(options = {}) {
|
|
|
76
76
|
}
|
|
77
77
|
async function runPrerenderFromCLIPrerenderCommand() {
|
|
78
78
|
try {
|
|
79
|
-
const {
|
|
80
|
-
await runPrerender({ viteConfig:
|
|
79
|
+
const { viteConfigFromUserEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)({}, 'prerender');
|
|
80
|
+
await runPrerender({ viteConfig: viteConfigFromUserEnhanced }, '$ vike prerender');
|
|
81
81
|
}
|
|
82
82
|
catch (err) {
|
|
83
83
|
console.error(err);
|
|
@@ -22,8 +22,8 @@ async function createDevMiddleware(options = {}) {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
|
-
const {
|
|
26
|
-
const server = await (0, vite_1.createServer)(
|
|
25
|
+
const { viteConfigFromUserEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(optionsMod, 'dev');
|
|
26
|
+
const server = await (0, vite_1.createServer)(viteConfigFromUserEnhanced);
|
|
27
27
|
const devMiddleware = server.middlewares;
|
|
28
28
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
29
29
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pick = pick;
|
|
4
|
+
function pick(obj, keys) {
|
|
5
|
+
const result = {};
|
|
6
|
+
for (const key of keys) {
|
|
7
|
+
if (key in obj) {
|
|
8
|
+
result[key] = obj[key];
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
@@ -11,13 +11,13 @@ import { assertVersion } from './utils.js';
|
|
|
11
11
|
* https://vike.dev/api#build
|
|
12
12
|
*/
|
|
13
13
|
async function build(options = {}) {
|
|
14
|
-
const {
|
|
14
|
+
const { viteConfigFromUserEnhanced, vikeConfig } = await prepareViteApiCall(options, 'build');
|
|
15
15
|
// Pass it to pluginAutoFullBuild()
|
|
16
|
-
if (
|
|
17
|
-
|
|
16
|
+
if (viteConfigFromUserEnhanced)
|
|
17
|
+
viteConfigFromUserEnhanced._viteConfigFromUserEnhanced = viteConfigFromUserEnhanced;
|
|
18
18
|
if (vikeConfig.global.config.vite6BuilderApp) {
|
|
19
19
|
assertVersion('Vite', version, '6.0.0');
|
|
20
|
-
const builder = await createBuilder(
|
|
20
|
+
const builder = await createBuilder(viteConfigFromUserEnhanced);
|
|
21
21
|
// See Vite plugin vike:build:pluginBuildApp
|
|
22
22
|
await builder.buildApp();
|
|
23
23
|
}
|
|
@@ -30,14 +30,14 @@ async function build(options = {}) {
|
|
|
30
30
|
// > See: https://github.com/vikejs/vike/blob/c6c7533a56b3a16fc43ed644fc5c10c02d0ff375/vike/node/plugin/plugins/autoFullBuild.ts#L98
|
|
31
31
|
// > We purposely don't start the pre-rendering in this `build()` function but in a Rollup hook instead.
|
|
32
32
|
// > Rationale: https://github.com/vikejs/vike/issues/2123
|
|
33
|
-
await buildVite(
|
|
33
|
+
await buildVite(viteConfigFromUserEnhanced);
|
|
34
34
|
// After pre-rendering, when using the Vike CLI, the process is forcefully exited at the end of the buildVite() call above.
|
|
35
35
|
if (isVikeCli() && isPrerendering())
|
|
36
36
|
assert(false);
|
|
37
37
|
}
|
|
38
38
|
return {
|
|
39
|
-
/* We don't return `viteConfig` because `
|
|
40
|
-
viteConfig:
|
|
39
|
+
/* We don't return `viteConfig` because `viteConfigFromUserEnhanced` is `InlineConfig` not `ResolvedConfig`
|
|
40
|
+
viteConfig: viteConfigFromUserEnhanced,
|
|
41
41
|
*/
|
|
42
42
|
};
|
|
43
43
|
}
|
package/dist/esm/node/api/dev.js
CHANGED
|
@@ -7,8 +7,8 @@ import { createServer } from 'vite';
|
|
|
7
7
|
* https://vike.dev/api#dev
|
|
8
8
|
*/
|
|
9
9
|
async function dev(options = {}) {
|
|
10
|
-
const {
|
|
11
|
-
const server = await createServer(
|
|
10
|
+
const { viteConfigFromUserEnhanced } = await prepareViteApiCall(options, 'dev');
|
|
11
|
+
const server = await createServer(viteConfigFromUserEnhanced);
|
|
12
12
|
return {
|
|
13
13
|
viteServer: server,
|
|
14
14
|
viteConfig: server.config
|
|
@@ -7,7 +7,7 @@ import type { APIOptions, Operation } from './types.js';
|
|
|
7
7
|
import { type VikeConfigObject } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
8
8
|
declare function prepareViteApiCall(options: APIOptions, operation: Operation): Promise<{
|
|
9
9
|
vikeConfig: VikeConfigObject;
|
|
10
|
-
|
|
10
|
+
viteConfigFromUserEnhanced: InlineConfig | undefined;
|
|
11
11
|
}>;
|
|
12
12
|
declare function getViteRoot(operation: Operation): Promise<string>;
|
|
13
13
|
declare function normalizeViteRoot(root: string): string;
|
|
@@ -4,9 +4,9 @@ export { assertViteRoot };
|
|
|
4
4
|
export { normalizeViteRoot };
|
|
5
5
|
import { loadConfigFromFile, mergeConfig, resolveConfig } from 'vite';
|
|
6
6
|
import { clearContextApiOperation, setContextApiOperation } from './context.js';
|
|
7
|
-
import { getVikeConfig2 } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
7
|
+
import { getVikeConfig2, getVikeConfigFromCliOrEnv } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
8
8
|
import path from 'path';
|
|
9
|
-
import { assert, assertUsage, getGlobalObject, isObject, toPosixPath } from './utils.js';
|
|
9
|
+
import { assert, assertUsage, getGlobalObject, isObject, pick, toPosixPath } from './utils.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
11
11
|
import { clearGlobalContext } from '../runtime/globalContext.js';
|
|
12
12
|
import { getEnvVarObject } from '../plugin/shared/getEnvVarObject.js';
|
|
@@ -14,34 +14,36 @@ const globalObject = getGlobalObject('api/prepareViteApiCall.ts', {});
|
|
|
14
14
|
async function prepareViteApiCall(options, operation) {
|
|
15
15
|
clear();
|
|
16
16
|
setContextApiOperation(operation, options);
|
|
17
|
-
const
|
|
18
|
-
return
|
|
17
|
+
const viteConfigFromUserApiOptions = options.viteConfig;
|
|
18
|
+
return resolveConfigs(viteConfigFromUserApiOptions, operation);
|
|
19
19
|
}
|
|
20
20
|
// For subsequent API calls, e.g. calling prerender() after build()
|
|
21
21
|
function clear() {
|
|
22
22
|
clearContextApiOperation();
|
|
23
23
|
clearGlobalContext();
|
|
24
24
|
}
|
|
25
|
-
async function
|
|
26
|
-
const viteInfo = await getViteInfo(
|
|
27
|
-
await assertViteRoot2(viteInfo.root, viteInfo.
|
|
25
|
+
async function resolveConfigs(viteConfigFromUserApiOptions, operation) {
|
|
26
|
+
const viteInfo = await getViteInfo(viteConfigFromUserApiOptions, operation);
|
|
27
|
+
await assertViteRoot2(viteInfo.root, viteInfo.viteConfigFromUserEnhanced, operation);
|
|
28
28
|
const vikeConfig = await getVikeConfig2(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
|
|
29
|
-
const
|
|
29
|
+
const viteConfigFromUserEnhanced = applyVikeViteConfig(viteInfo.viteConfigFromUserEnhanced, vikeConfig);
|
|
30
30
|
return {
|
|
31
31
|
vikeConfig,
|
|
32
|
-
|
|
32
|
+
viteConfigFromUserEnhanced
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
// Apply +vite
|
|
36
|
+
// - For example, Vike extensions adding Vite plugins
|
|
37
|
+
function applyVikeViteConfig(viteConfigFromUserEnhanced, vikeConfig) {
|
|
36
38
|
const viteConfigs = vikeConfig.global._from.configsCumulative.vite;
|
|
37
39
|
if (!viteConfigs)
|
|
38
|
-
return
|
|
40
|
+
return viteConfigFromUserEnhanced;
|
|
39
41
|
viteConfigs.values.forEach((v) => {
|
|
40
42
|
assertUsage(isObject(v.value), `${v.definedAt} should be an object`);
|
|
41
|
-
|
|
43
|
+
viteConfigFromUserEnhanced = mergeConfig(viteConfigFromUserEnhanced ?? {}, v.value);
|
|
42
44
|
assertUsage(!findVikeVitePlugin(v.value), "Using the +vite setting to add Vike's Vite plugin is forbidden");
|
|
43
45
|
});
|
|
44
|
-
return
|
|
46
|
+
return viteConfigFromUserEnhanced;
|
|
45
47
|
}
|
|
46
48
|
async function getViteRoot(operation) {
|
|
47
49
|
if (!globalObject.root)
|
|
@@ -49,19 +51,30 @@ async function getViteRoot(operation) {
|
|
|
49
51
|
assert(globalObject.root);
|
|
50
52
|
return globalObject.root;
|
|
51
53
|
}
|
|
52
|
-
async function getViteInfo(
|
|
53
|
-
let
|
|
54
|
+
async function getViteInfo(viteConfigFromUserApiOptions, operation) {
|
|
55
|
+
let viteConfigFromUserEnhanced = viteConfigFromUserApiOptions;
|
|
54
56
|
// Precedence:
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
57
|
+
// 1) viteConfigFromUserEnvVar (highest precendence)
|
|
58
|
+
// 2) viteConfigFromUserVikeConfig
|
|
59
|
+
// 2) viteConfigFromUserApiOptions
|
|
60
|
+
// 3) viteConfigFromUserViteFile (lowest precendence)
|
|
61
|
+
// Resolve Vike's +mode setting
|
|
62
|
+
{
|
|
63
|
+
const viteConfigFromUserVikeConfig = pick(getVikeConfigFromCliOrEnv().vikeConfigFromCliOrEnv, ['mode']);
|
|
64
|
+
if (Object.keys(viteConfigFromUserVikeConfig).length > 0) {
|
|
65
|
+
viteConfigFromUserEnhanced = mergeConfig(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserVikeConfig);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Resolve VITE_CONFIG
|
|
58
69
|
const viteConfigFromUserEnvVar = getEnvVarObject('VITE_CONFIG');
|
|
59
|
-
if (viteConfigFromUserEnvVar)
|
|
60
|
-
|
|
61
|
-
|
|
70
|
+
if (viteConfigFromUserEnvVar) {
|
|
71
|
+
viteConfigFromUserEnhanced = mergeConfig(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserEnvVar);
|
|
72
|
+
}
|
|
73
|
+
// Resolve vite.config.js
|
|
74
|
+
const viteConfigFromUserViteFile = await loadViteConfigFile(viteConfigFromUserEnhanced, operation);
|
|
62
75
|
// Correct precedence, replicates Vite:
|
|
63
76
|
// https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1001
|
|
64
|
-
const viteConfigResolved = mergeConfig(viteConfigFromUserViteFile ?? {},
|
|
77
|
+
const viteConfigResolved = mergeConfig(viteConfigFromUserViteFile ?? {}, viteConfigFromUserEnhanced ?? {});
|
|
65
78
|
const root = normalizeViteRoot(viteConfigResolved.root ?? process.cwd());
|
|
66
79
|
globalObject.root = root;
|
|
67
80
|
// - Find options `vike(options)` set in vite.config.js
|
|
@@ -76,16 +89,16 @@ async function getViteInfo(viteConfigFromOptions, operation) {
|
|
|
76
89
|
// Add Vike to plugins if not present.
|
|
77
90
|
// Using a dynamic import because the script calling the Vike API may not live in the same place as vite.config.js, thus vike/plugin may resolved to two different node_modules/vike directories.
|
|
78
91
|
const { plugin: vikePlugin } = await import('../plugin/index.js');
|
|
79
|
-
|
|
80
|
-
...
|
|
81
|
-
plugins: [...(
|
|
92
|
+
viteConfigFromUserEnhanced = {
|
|
93
|
+
...viteConfigFromUserEnhanced,
|
|
94
|
+
plugins: [...(viteConfigFromUserEnhanced?.plugins ?? []), vikePlugin()]
|
|
82
95
|
};
|
|
83
|
-
const res = findVikeVitePlugin(
|
|
96
|
+
const res = findVikeVitePlugin(viteConfigFromUserEnhanced);
|
|
84
97
|
assert(res);
|
|
85
98
|
vikeVitePluginOptions = res.vikeVitePluginOptions;
|
|
86
99
|
}
|
|
87
100
|
assert(vikeVitePluginOptions);
|
|
88
|
-
return { root, vikeVitePluginOptions,
|
|
101
|
+
return { root, vikeVitePluginOptions, viteConfigFromUserEnhanced };
|
|
89
102
|
}
|
|
90
103
|
function findVikeVitePlugin(viteConfig) {
|
|
91
104
|
let vikeVitePluginOptions;
|
|
@@ -103,8 +116,8 @@ function findVikeVitePlugin(viteConfig) {
|
|
|
103
116
|
return { vikeVitePluginOptions };
|
|
104
117
|
}
|
|
105
118
|
// Copied from https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L961-L1005
|
|
106
|
-
async function loadViteConfigFile(
|
|
107
|
-
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(
|
|
119
|
+
async function loadViteConfigFile(viteConfigFromUserApiOptions, operation) {
|
|
120
|
+
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(viteConfigFromUserApiOptions, operation);
|
|
108
121
|
let config = inlineConfig;
|
|
109
122
|
let mode = inlineConfig.mode || defaultMode;
|
|
110
123
|
const configEnv = {
|
|
@@ -136,8 +149,8 @@ function normalizeViteRoot(root) {
|
|
|
136
149
|
path.resolve(root));
|
|
137
150
|
}
|
|
138
151
|
const errMsg = `A Vite plugin is modifying Vite's setting ${pc.cyan('root')} which is forbidden`;
|
|
139
|
-
async function assertViteRoot2(root,
|
|
140
|
-
const args = getResolveConfigArgs(
|
|
152
|
+
async function assertViteRoot2(root, viteConfigFromUserEnhanced, operation) {
|
|
153
|
+
const args = getResolveConfigArgs(viteConfigFromUserEnhanced, operation);
|
|
141
154
|
// We can eventually this resolveConfig() call (along with removing the whole assertViteRoot2() function which is redundant with the assertViteRoot() function) so that Vike doesn't make any resolveConfig() (except for pre-rendering which is required). But let's keep it for now, just to see whether calling resolveConfig() can be problematic.
|
|
142
155
|
const viteConfigResolved = await resolveConfig(...args);
|
|
143
156
|
assertUsage(normalizeViteRoot(viteConfigResolved.root) === normalizeViteRoot(root), errMsg);
|
|
@@ -8,8 +8,8 @@ import { prepareViteApiCall } from './prepareViteApiCall.js';
|
|
|
8
8
|
* https://vike.dev/api#prerender
|
|
9
9
|
*/
|
|
10
10
|
async function prerender(options = {}) {
|
|
11
|
-
const {
|
|
12
|
-
options.viteConfig =
|
|
11
|
+
const { viteConfigFromUserEnhanced } = await prepareViteApiCall(options, 'prerender');
|
|
12
|
+
options.viteConfig = viteConfigFromUserEnhanced;
|
|
13
13
|
const { viteConfig } = await runPrerenderFromAPI(options);
|
|
14
14
|
return {
|
|
15
15
|
viteConfig
|
|
@@ -7,8 +7,8 @@ import { preview as previewVite } from 'vite';
|
|
|
7
7
|
* https://vike.dev/api#preview
|
|
8
8
|
*/
|
|
9
9
|
async function preview(options = {}) {
|
|
10
|
-
const {
|
|
11
|
-
const server = await previewVite(
|
|
10
|
+
const { viteConfigFromUserEnhanced } = await prepareViteApiCall(options, 'preview');
|
|
11
|
+
const server = await previewVite(viteConfigFromUserEnhanced);
|
|
12
12
|
return {
|
|
13
13
|
viteServer: server,
|
|
14
14
|
viteConfig: server.config
|
|
@@ -6,7 +6,7 @@ const commands = [
|
|
|
6
6
|
{ name: 'dev', desc: 'Start development server' },
|
|
7
7
|
{ name: 'build', desc: 'Build for production' },
|
|
8
8
|
{ name: 'preview', desc: 'Start preview server using production build (only works for SSG apps)' },
|
|
9
|
-
{ name: 'prerender', desc: 'Pre-render pages (only needed when
|
|
9
|
+
{ name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' }
|
|
10
10
|
];
|
|
11
11
|
function parseCli() {
|
|
12
12
|
const command = getCommand();
|
|
@@ -57,10 +57,16 @@ function showHelp() {
|
|
|
57
57
|
`vike@${PROJECT_VERSION}`,
|
|
58
58
|
'',
|
|
59
59
|
'Usage:',
|
|
60
|
-
...[...commands, { name: '-v', desc: "Print Vike's installed version" }].map((c) => ` ${pc.dim('$')} ${pc.
|
|
60
|
+
...[...commands, { name: '-v', desc: "Print Vike's installed version" }].map((c) => ` ${pc.dim('$')} vike ${c.name.startsWith('-') ? pc.cyan(`${c.name}`) : pc.bold(`${c.name}`)}${' '.repeat(nameMaxLength - c.name.length)}${TAB}${pc.dim(`# ${c.desc}`)}`),
|
|
61
61
|
'',
|
|
62
|
-
|
|
63
|
-
`
|
|
62
|
+
'Common CLI options:',
|
|
63
|
+
[`vike dev ${pc.cyan('--host')}`, `vike dev ${pc.cyan('--port')} 80`, `vike build ${pc.cyan('--mode')} staging`]
|
|
64
|
+
.map((o) => ` ${pc.dim('$')} ${o}`)
|
|
65
|
+
.join('\n'),
|
|
66
|
+
'',
|
|
67
|
+
`More Vike settings can be passed over the ${pc.cyan('VIKE_CONFIG')} environment variable or as ${pc.cyan('CLI options')}.`,
|
|
68
|
+
`More Vite settings can be passed over the ${pc.cyan('VITE_CONFIG')} environment variable.`,
|
|
69
|
+
``,
|
|
64
70
|
`See ${pc.underline('https://vike.dev/cli')} for more information.`
|
|
65
71
|
].join('\n'));
|
|
66
72
|
process.exit(1);
|
|
@@ -124,8 +124,8 @@ function isPrerenderForceExit() {
|
|
|
124
124
|
}
|
|
125
125
|
function getFullBuildInlineConfig(config) {
|
|
126
126
|
const configFromCli = !isViteCliCall() ? null : getViteConfigFromCli();
|
|
127
|
-
if (config.
|
|
128
|
-
return config.
|
|
127
|
+
if (config._viteConfigFromUserEnhanced) {
|
|
128
|
+
return config._viteConfigFromUserEnhanced;
|
|
129
129
|
}
|
|
130
130
|
else {
|
|
131
131
|
return {
|
|
@@ -10,7 +10,7 @@ declare module 'vite' {
|
|
|
10
10
|
_vikeVitePluginOptions?: unknown;
|
|
11
11
|
_root?: string;
|
|
12
12
|
_baseViteOriginal?: string;
|
|
13
|
-
|
|
13
|
+
_viteConfigFromUserEnhanced?: InlineConfig;
|
|
14
14
|
_vike?: VikeConfigPublic;
|
|
15
15
|
_vikeConfigObject?: VikeConfigObject;
|
|
16
16
|
}
|
|
@@ -5,6 +5,7 @@ export { reloadVikeConfig };
|
|
|
5
5
|
export { isV1Design };
|
|
6
6
|
export { getConfVal };
|
|
7
7
|
export { getConfigDefinitionOptional };
|
|
8
|
+
export { getVikeConfigFromCliOrEnv };
|
|
8
9
|
export { isOverriden };
|
|
9
10
|
export type { VikeConfigObject };
|
|
10
11
|
import type { PageConfigGlobalBuildTime, ConfigValueSource, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
|
|
@@ -26,6 +27,13 @@ declare function getVikeConfig(config: ResolvedConfig, { doNotRestartViteOnError
|
|
|
26
27
|
declare function getVikeConfig2(userRootDir: string, isDev: boolean, vikeVitePluginOptions: unknown): Promise<VikeConfigObject>;
|
|
27
28
|
declare function getVikeConfigOptional(): Promise<null | VikeConfigObject>;
|
|
28
29
|
declare function isV1Design(config: ResolvedConfig | UserConfig): boolean;
|
|
30
|
+
declare function getVikeConfigFromCliOrEnv(): {
|
|
31
|
+
vikeConfigFromCliOrEnv: {
|
|
32
|
+
[x: string]: unknown;
|
|
33
|
+
};
|
|
34
|
+
configFromCliOptions: import("../../../../cli/parseCli.js").CliOptions | null;
|
|
35
|
+
configFromEnvVar: Record<string, unknown> | null;
|
|
36
|
+
};
|
|
29
37
|
declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitions, configName: string): ConfigDefinitionInternal | null;
|
|
30
38
|
declare function getConfVal(plusFile: PlusFile, configName: string): null | {
|
|
31
39
|
value: unknown;
|
|
@@ -5,6 +5,7 @@ export { reloadVikeConfig };
|
|
|
5
5
|
export { isV1Design };
|
|
6
6
|
export { getConfVal };
|
|
7
7
|
export { getConfigDefinitionOptional };
|
|
8
|
+
export { getVikeConfigFromCliOrEnv };
|
|
8
9
|
export { isOverriden };
|
|
9
10
|
import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, includes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, assertKeys, objectKeys, objectFromEntries, unique, isCallable, makeFirst, lowerFirst, makeLast, assertIsSingleModuleInstance } from '../../../utils.js';
|
|
10
11
|
import { configDefinitionsBuiltIn } from './getVikeConfig/configDefinitionsBuiltIn.js';
|
|
@@ -390,15 +391,14 @@ function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
|
390
391
|
if (apiOperation?.options.vikeConfig) {
|
|
391
392
|
addSources(apiOperation.options.vikeConfig, { definedBy: 'api', operation: apiOperation.operation }, false);
|
|
392
393
|
}
|
|
394
|
+
const { configFromCliOptions, configFromEnvVar } = getVikeConfigFromCliOrEnv();
|
|
393
395
|
// Vike CLI options
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
addSources(cliOptions, { definedBy: 'cli' }, true);
|
|
396
|
+
if (configFromCliOptions) {
|
|
397
|
+
addSources(configFromCliOptions, { definedBy: 'cli' }, true);
|
|
397
398
|
}
|
|
398
399
|
// VIKE_CONFIG [highest precedence]
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
addSources(configFromEnv, { definedBy: 'env' }, false);
|
|
400
|
+
if (configFromEnvVar) {
|
|
401
|
+
addSources(configFromEnvVar, { definedBy: 'env' }, false);
|
|
402
402
|
}
|
|
403
403
|
return;
|
|
404
404
|
function addSources(configValues, definedBy, exitOnError) {
|
|
@@ -411,6 +411,19 @@ function setCliAndApiOptions(pageConfigGlobal, configDefinitionsResolved) {
|
|
|
411
411
|
});
|
|
412
412
|
}
|
|
413
413
|
}
|
|
414
|
+
function getVikeConfigFromCliOrEnv() {
|
|
415
|
+
const configFromCliOptions = getCliOptions();
|
|
416
|
+
const configFromEnvVar = getEnvVarObject('VIKE_CONFIG');
|
|
417
|
+
const vikeConfigFromCliOrEnv = {
|
|
418
|
+
...configFromCliOptions, // Lower precedence
|
|
419
|
+
...configFromEnvVar // Higher precedence
|
|
420
|
+
};
|
|
421
|
+
return {
|
|
422
|
+
vikeConfigFromCliOrEnv,
|
|
423
|
+
configFromCliOptions,
|
|
424
|
+
configFromEnvVar
|
|
425
|
+
};
|
|
426
|
+
}
|
|
414
427
|
function getSourceNonConfigFile(configName, value, definedAt) {
|
|
415
428
|
assert(includes(objectKeys(configDefinitionsBuiltIn), configName));
|
|
416
429
|
const configDef = configDefinitionsBuiltIn[configName];
|
|
@@ -18,8 +18,15 @@ function parseJson5(valueStr, what) {
|
|
|
18
18
|
value = JSON5.parse(valueStr);
|
|
19
19
|
}
|
|
20
20
|
catch (err) {
|
|
21
|
+
if (isNotJavaScriptLike(valueStr)) {
|
|
22
|
+
// Interpret as string
|
|
23
|
+
return valueStr;
|
|
24
|
+
}
|
|
21
25
|
console.error(err);
|
|
22
26
|
assertUsage(false, `Cannot parse ${pc.cyan(what)} (see error above) because it's set to the following which isn't a valid JSON5 string: ${pc.bold(valueStr)}`);
|
|
23
27
|
}
|
|
24
28
|
return value;
|
|
25
29
|
}
|
|
30
|
+
function isNotJavaScriptLike(valueStr) {
|
|
31
|
+
return ![':', ',', '{', '}', '(', ')'].some((c) => valueStr.includes(c));
|
|
32
|
+
}
|
|
@@ -38,8 +38,8 @@ async function runPrerenderFromAPI(options = {}) {
|
|
|
38
38
|
}
|
|
39
39
|
async function runPrerenderFromCLIPrerenderCommand() {
|
|
40
40
|
try {
|
|
41
|
-
const {
|
|
42
|
-
await runPrerender({ viteConfig:
|
|
41
|
+
const { viteConfigFromUserEnhanced } = await prepareViteApiCall({}, 'prerender');
|
|
42
|
+
await runPrerender({ viteConfig: viteConfigFromUserEnhanced }, '$ vike prerender');
|
|
43
43
|
}
|
|
44
44
|
catch (err) {
|
|
45
45
|
console.error(err);
|
|
@@ -20,8 +20,8 @@ async function createDevMiddleware(options = {}) {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
-
const {
|
|
24
|
-
const server = await createServer(
|
|
23
|
+
const { viteConfigFromUserEnhanced } = await prepareViteApiCall(optionsMod, 'dev');
|
|
24
|
+
const server = await createServer(viteConfigFromUserEnhanced);
|
|
25
25
|
const devMiddleware = server.middlewares;
|
|
26
26
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
27
27
|
}
|
|
@@ -491,6 +491,12 @@ type ConfigBuiltIn = {
|
|
|
491
491
|
* https://vike.dev/port
|
|
492
492
|
*/
|
|
493
493
|
port?: number;
|
|
494
|
+
/**
|
|
495
|
+
* Set the mode to run in.
|
|
496
|
+
*
|
|
497
|
+
* https://vike.dev/mode
|
|
498
|
+
*/
|
|
499
|
+
mode?: string;
|
|
494
500
|
/** Where scripts are injected in the HTML.
|
|
495
501
|
*
|
|
496
502
|
* https://vike.dev/injectScriptsAt
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.225-commit-
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.225-commit-b8fc36e";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.225-commit-
|
|
2
|
+
export const PROJECT_VERSION = '0.4.225-commit-b8fc36e';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function pick<Obj extends Record<string, unknown>, Keys extends keyof Obj>(obj: Obj, keys: Keys[]): Pick<Obj, Keys>;
|