vike 0.4.225-commit-2b7971f → 0.4.225-commit-6fc12fc
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 +45 -30
- package/dist/cjs/node/api/prerender.js +2 -3
- package/dist/cjs/node/api/preview.js +25 -6
- package/dist/cjs/node/api/utils.js +1 -0
- package/dist/cjs/node/cli/entry.js +4 -2
- 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/build/pluginModuleBanner.js +51 -0
- package/dist/cjs/node/plugin/plugins/build.js +3 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +4 -0
- 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/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +8 -4
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/cjs/node/shared/utils.js +1 -1
- package/dist/cjs/node/shared/virtual-files.js +14 -10
- package/dist/cjs/shared/modifyUrl.js +3 -5
- package/dist/cjs/shared/modifyUrlSameOrigin.js +42 -0
- package/dist/cjs/shared/utils.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/isNullish.js +16 -0
- package/dist/cjs/utils/objectFilter.js +10 -0
- package/dist/cjs/utils/pick.js +12 -0
- package/dist/esm/client/client-routing-runtime/navigate.d.ts +6 -5
- package/dist/esm/client/client-routing-runtime/navigate.js +6 -2
- package/dist/esm/client/client-routing-runtime/normalizeUrlArgument.js +1 -1
- 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 +2 -1
- package/dist/esm/node/api/prepareViteApiCall.js +47 -32
- package/dist/esm/node/api/prerender.js +2 -3
- package/dist/esm/node/api/preview.d.ts +1 -1
- package/dist/esm/node/api/preview.js +22 -6
- package/dist/esm/node/api/utils.d.ts +1 -0
- package/dist/esm/node/api/utils.js +1 -0
- package/dist/esm/node/cli/entry.js +4 -2
- 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/build/pluginModuleBanner.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +49 -0
- package/dist/esm/node/plugin/plugins/build.js +3 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +3 -1
- package/dist/esm/node/plugin/plugins/commonConfig.js +4 -0
- 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/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +2 -3
- package/dist/esm/node/runtime/globalContext.js +8 -4
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/esm/node/shared/utils.d.ts +1 -1
- package/dist/esm/node/shared/utils.js +1 -1
- package/dist/esm/node/shared/virtual-files.d.ts +2 -0
- package/dist/esm/node/shared/virtual-files.js +14 -10
- package/dist/esm/shared/modifyUrl.d.ts +2 -2
- package/dist/esm/shared/modifyUrl.js +3 -5
- package/dist/esm/shared/modifyUrlSameOrigin.d.ts +9 -0
- package/dist/esm/shared/modifyUrlSameOrigin.js +40 -0
- package/dist/esm/shared/page-configs/Config.d.ts +6 -0
- package/dist/esm/shared/utils.d.ts +2 -1
- package/dist/esm/shared/utils.js +2 -1
- package/dist/esm/types/index.d.ts +0 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/isNullish.d.ts +3 -0
- package/dist/esm/utils/isNullish.js +11 -0
- package/dist/esm/utils/objectFilter.d.ts +1 -0
- package/dist/esm/utils/objectFilter.js +7 -0
- package/dist/esm/utils/pick.d.ts +1 -0
- package/dist/esm/utils/pick.js +9 -0
- package/package.json +2 -2
- package/dist/cjs/utils/isNotNullish.js +0 -5
- package/dist/esm/utils/isNotNullish.d.ts +0 -1
- package/dist/esm/utils/isNotNullish.js +0 -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,37 @@ 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
|
+
const { viteConfigResolved } = 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
|
+
viteConfigResolved, // ONLY USE if strictly necessary. (We plan to remove assertViteRoot2() as explained in the comments of that function.)
|
|
71
|
+
viteConfigFromUserEnhanced
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
+
// Apply +vite
|
|
75
|
+
// - For example, Vike extensions adding Vite plugins
|
|
76
|
+
function applyVikeViteConfig(viteConfigFromUserEnhanced, vikeConfig) {
|
|
74
77
|
const viteConfigs = vikeConfig.global._from.configsCumulative.vite;
|
|
75
78
|
if (!viteConfigs)
|
|
76
|
-
return
|
|
79
|
+
return viteConfigFromUserEnhanced;
|
|
77
80
|
viteConfigs.values.forEach((v) => {
|
|
78
81
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(v.value), `${v.definedAt} should be an object`);
|
|
79
|
-
|
|
82
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, v.value);
|
|
80
83
|
(0, utils_js_1.assertUsage)(!findVikeVitePlugin(v.value), "Using the +vite setting to add Vike's Vite plugin is forbidden");
|
|
81
84
|
});
|
|
82
|
-
return
|
|
85
|
+
return viteConfigFromUserEnhanced;
|
|
83
86
|
}
|
|
84
87
|
async function getViteRoot(operation) {
|
|
85
88
|
if (!globalObject.root)
|
|
@@ -87,19 +90,30 @@ async function getViteRoot(operation) {
|
|
|
87
90
|
(0, utils_js_1.assert)(globalObject.root);
|
|
88
91
|
return globalObject.root;
|
|
89
92
|
}
|
|
90
|
-
async function getViteInfo(
|
|
91
|
-
let
|
|
93
|
+
async function getViteInfo(viteConfigFromUserApiOptions, operation) {
|
|
94
|
+
let viteConfigFromUserEnhanced = viteConfigFromUserApiOptions;
|
|
92
95
|
// Precedence:
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
+
// 1) viteConfigFromUserEnvVar (highest precendence)
|
|
97
|
+
// 2) viteConfigFromUserVikeConfig
|
|
98
|
+
// 2) viteConfigFromUserApiOptions
|
|
99
|
+
// 3) viteConfigFromUserViteFile (lowest precendence)
|
|
100
|
+
// Resolve Vike's +mode setting
|
|
101
|
+
{
|
|
102
|
+
const viteConfigFromUserVikeConfig = (0, utils_js_1.pick)((0, getVikeConfig_js_1.getVikeConfigFromCliOrEnv)().vikeConfigFromCliOrEnv, ['mode']);
|
|
103
|
+
if (Object.keys(viteConfigFromUserVikeConfig).length > 0) {
|
|
104
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserVikeConfig);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Resolve VITE_CONFIG
|
|
96
108
|
const viteConfigFromUserEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VITE_CONFIG');
|
|
97
|
-
if (viteConfigFromUserEnvVar)
|
|
98
|
-
|
|
99
|
-
|
|
109
|
+
if (viteConfigFromUserEnvVar) {
|
|
110
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserEnvVar);
|
|
111
|
+
}
|
|
112
|
+
// Resolve vite.config.js
|
|
113
|
+
const viteConfigFromUserViteFile = await loadViteConfigFile(viteConfigFromUserEnhanced, operation);
|
|
100
114
|
// Correct precedence, replicates Vite:
|
|
101
115
|
// https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1001
|
|
102
|
-
const viteConfigResolved = (0, vite_1.mergeConfig)(viteConfigFromUserViteFile ?? {},
|
|
116
|
+
const viteConfigResolved = (0, vite_1.mergeConfig)(viteConfigFromUserViteFile ?? {}, viteConfigFromUserEnhanced ?? {});
|
|
103
117
|
const root = normalizeViteRoot(viteConfigResolved.root ?? process.cwd());
|
|
104
118
|
globalObject.root = root;
|
|
105
119
|
// - Find options `vike(options)` set in vite.config.js
|
|
@@ -114,16 +128,16 @@ async function getViteInfo(viteConfigFromOptions, operation) {
|
|
|
114
128
|
// Add Vike to plugins if not present.
|
|
115
129
|
// 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
130
|
const { plugin: vikePlugin } = await Promise.resolve().then(() => __importStar(require('../plugin/index.js')));
|
|
117
|
-
|
|
118
|
-
...
|
|
119
|
-
plugins: [...(
|
|
131
|
+
viteConfigFromUserEnhanced = {
|
|
132
|
+
...viteConfigFromUserEnhanced,
|
|
133
|
+
plugins: [...(viteConfigFromUserEnhanced?.plugins ?? []), vikePlugin()]
|
|
120
134
|
};
|
|
121
|
-
const res = findVikeVitePlugin(
|
|
135
|
+
const res = findVikeVitePlugin(viteConfigFromUserEnhanced);
|
|
122
136
|
(0, utils_js_1.assert)(res);
|
|
123
137
|
vikeVitePluginOptions = res.vikeVitePluginOptions;
|
|
124
138
|
}
|
|
125
139
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
126
|
-
return { root, vikeVitePluginOptions,
|
|
140
|
+
return { root, vikeVitePluginOptions, viteConfigFromUserEnhanced };
|
|
127
141
|
}
|
|
128
142
|
function findVikeVitePlugin(viteConfig) {
|
|
129
143
|
let vikeVitePluginOptions;
|
|
@@ -141,8 +155,8 @@ function findVikeVitePlugin(viteConfig) {
|
|
|
141
155
|
return { vikeVitePluginOptions };
|
|
142
156
|
}
|
|
143
157
|
// 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(
|
|
158
|
+
async function loadViteConfigFile(viteConfigFromUserApiOptions, operation) {
|
|
159
|
+
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(viteConfigFromUserApiOptions, operation);
|
|
146
160
|
let config = inlineConfig;
|
|
147
161
|
let mode = inlineConfig.mode || defaultMode;
|
|
148
162
|
const configEnv = {
|
|
@@ -174,11 +188,12 @@ function normalizeViteRoot(root) {
|
|
|
174
188
|
path_1.default.resolve(root));
|
|
175
189
|
}
|
|
176
190
|
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(
|
|
179
|
-
// 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.
|
|
191
|
+
async function assertViteRoot2(root, viteConfigFromUserEnhanced, operation) {
|
|
192
|
+
const args = getResolveConfigArgs(viteConfigFromUserEnhanced, operation);
|
|
193
|
+
// We can eventually remove 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 and preview which is required). But let's keep it for now, just to see whether calling resolveConfig() can be problematic.
|
|
180
194
|
const viteConfigResolved = await (0, vite_1.resolveConfig)(...args);
|
|
181
195
|
(0, utils_js_1.assertUsage)(normalizeViteRoot(viteConfigResolved.root) === normalizeViteRoot(root), errMsg);
|
|
196
|
+
return { viteConfigResolved };
|
|
182
197
|
}
|
|
183
198
|
function assertViteRoot(root, config) {
|
|
184
199
|
if (globalObject.root)
|
|
@@ -3,15 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.prerender = prerender;
|
|
4
4
|
const runPrerender_js_1 = require("../prerender/runPrerender.js");
|
|
5
5
|
const prepareViteApiCall_js_1 = require("./prepareViteApiCall.js");
|
|
6
|
-
// TODO/soon use importServerProductionIndex()
|
|
7
6
|
/**
|
|
8
7
|
* Programmatically trigger `$ vike prerender`
|
|
9
8
|
*
|
|
10
9
|
* https://vike.dev/api#prerender
|
|
11
10
|
*/
|
|
12
11
|
async function prerender(options = {}) {
|
|
13
|
-
const {
|
|
14
|
-
options.viteConfig =
|
|
12
|
+
const { viteConfigFromUserEnhanced } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'prerender');
|
|
13
|
+
options.viteConfig = viteConfigFromUserEnhanced;
|
|
15
14
|
const { viteConfig } = await (0, runPrerender_js_1.runPrerenderFromAPI)(options);
|
|
16
15
|
return {
|
|
17
16
|
viteConfig
|
|
@@ -1,18 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.preview = preview;
|
|
4
7
|
const prepareViteApiCall_js_1 = require("./prepareViteApiCall.js");
|
|
5
8
|
const vite_1 = require("vite");
|
|
9
|
+
const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
|
|
10
|
+
const getOutDirs_js_1 = require("../plugin/shared/getOutDirs.js");
|
|
11
|
+
const utils_js_1 = require("./utils.js");
|
|
12
|
+
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
13
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
6
14
|
/**
|
|
7
15
|
* Programmatically trigger `$ vike preview`
|
|
8
16
|
*
|
|
9
17
|
* https://vike.dev/api#preview
|
|
10
18
|
*/
|
|
11
19
|
async function preview(options = {}) {
|
|
12
|
-
const {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
const { viteConfigFromUserEnhanced, viteConfigResolved } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'preview');
|
|
21
|
+
if (viteConfigResolved.vitePluginServerEntry?.inject) {
|
|
22
|
+
const outDir = (0, getOutDirs_js_1.getOutDirs)(viteConfigResolved).outDirRoot;
|
|
23
|
+
const { outServerIndex } = await (0, runtime_1.importServerProductionIndex)({ outDir });
|
|
24
|
+
const outServerIndexRelative = node_path_1.default.relative(viteConfigResolved.root, outServerIndex);
|
|
25
|
+
(0, utils_js_1.assertWarning)(false, `Never run ${picocolors_1.default.cyan('$ vike preview')} in production, run ${picocolors_1.default.cyan(`$ node ${outServerIndexRelative}`)} instead.`, { onlyOnce: true });
|
|
26
|
+
return {
|
|
27
|
+
viteConfig: viteConfigResolved
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const server = await (0, vite_1.preview)(viteConfigFromUserEnhanced);
|
|
32
|
+
return {
|
|
33
|
+
viteServer: server,
|
|
34
|
+
viteConfig: server.config
|
|
35
|
+
};
|
|
36
|
+
}
|
|
18
37
|
}
|
|
@@ -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);
|
|
@@ -95,8 +95,10 @@ async function cmdBuild() {
|
|
|
95
95
|
async function cmdPreview() {
|
|
96
96
|
try {
|
|
97
97
|
const { viteServer } = await (0, index_js_1.preview)();
|
|
98
|
-
viteServer
|
|
99
|
-
|
|
98
|
+
if (viteServer) {
|
|
99
|
+
viteServer.printUrls();
|
|
100
|
+
viteServer.bindCLIShortcuts({ print: true });
|
|
101
|
+
}
|
|
100
102
|
}
|
|
101
103
|
catch (err) {
|
|
102
104
|
console.error(picocolors_1.default.red(`Error while starting preview server:`));
|
|
@@ -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 {
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.pluginModuleBanner = pluginModuleBanner;
|
|
4
|
+
const utils_js_1 = require("../../utils.js");
|
|
5
|
+
const virtual_files_js_1 = require("../../../shared/virtual-files.js");
|
|
6
|
+
const isViteServerBuild_js_1 = require("../../shared/isViteServerBuild.js");
|
|
7
|
+
// Rollup's banner feature doesn't work with Vite: https://github.com/vitejs/vite/issues/8412
|
|
8
|
+
// But, anyways, we want to prepend the banner at the beginning of each module, not at the beginning of each file (I believe that's what Rollup's banner feature does).
|
|
9
|
+
const vikeModuleBannerPlaceholder = 'vikeModuleBannerPlaceholder';
|
|
10
|
+
function pluginModuleBanner() {
|
|
11
|
+
let config;
|
|
12
|
+
return {
|
|
13
|
+
name: 'vike:pluginModuleBanner',
|
|
14
|
+
enforce: 'post',
|
|
15
|
+
apply: 'build',
|
|
16
|
+
configResolved(config_) {
|
|
17
|
+
config = config_;
|
|
18
|
+
},
|
|
19
|
+
generateBundle: {
|
|
20
|
+
order: 'post',
|
|
21
|
+
handler(_options, bundle) {
|
|
22
|
+
for (const module of Object.values(bundle)) {
|
|
23
|
+
if (module.type === 'chunk') {
|
|
24
|
+
if ((0, isViteServerBuild_js_1.isViteServerBuild)(config)) {
|
|
25
|
+
const codeOld = module.code;
|
|
26
|
+
const codeNew = codeOld.replace(/vikeModuleBannerPlaceholder\("([^"]*)"\);/g, '/* $1 [vike:pluginModuleBanner] */');
|
|
27
|
+
(0, utils_js_1.assert)(!codeNew.includes(vikeModuleBannerPlaceholder));
|
|
28
|
+
module.code = codeNew;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
(0, utils_js_1.assert)(!module.code.includes(vikeModuleBannerPlaceholder));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
transform: {
|
|
38
|
+
order: 'post',
|
|
39
|
+
handler(code, id, options) {
|
|
40
|
+
if (!(0, isViteServerBuild_js_1.isViteServerBuild_safe)(config, options))
|
|
41
|
+
return;
|
|
42
|
+
if (id.startsWith('\0'))
|
|
43
|
+
id = id;
|
|
44
|
+
id = (0, virtual_files_js_1.removeVirtualIdTag)(id);
|
|
45
|
+
if (id.startsWith(config.root))
|
|
46
|
+
id = id.slice(config.root.length + 1);
|
|
47
|
+
return `${vikeModuleBannerPlaceholder}(${JSON.stringify(id)}); ${code}`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -8,6 +8,7 @@ const pluginDistFileNames_js_1 = require("./build/pluginDistFileNames.js");
|
|
|
8
8
|
const pluginAutoFullBuild_js_1 = require("./build/pluginAutoFullBuild.js");
|
|
9
9
|
const pluginBuildEntry_js_1 = require("./build/pluginBuildEntry.js");
|
|
10
10
|
const pluginBuildConfig_js_1 = require("./build/pluginBuildConfig.js");
|
|
11
|
+
const pluginModuleBanner_js_1 = require("./build/pluginModuleBanner.js");
|
|
11
12
|
function build() {
|
|
12
13
|
return [
|
|
13
14
|
...(0, pluginBuildConfig_js_1.pluginBuildConfig)(),
|
|
@@ -16,6 +17,7 @@ function build() {
|
|
|
16
17
|
...(0, pluginBuildEntry_js_1.pluginBuildEntry)(),
|
|
17
18
|
(0, pluginDistPackageJsonFile_js_1.pluginDistPackageJsonFile)(),
|
|
18
19
|
(0, pluginSuppressRollupWarning_js_1.pluginSuppressRollupWarning)(),
|
|
19
|
-
(0, pluginDistFileNames_js_1.pluginDistFileNames)()
|
|
20
|
+
(0, pluginDistFileNames_js_1.pluginDistFileNames)(),
|
|
21
|
+
(0, pluginModuleBanner_js_1.pluginModuleBanner)()
|
|
20
22
|
];
|
|
21
23
|
}
|
|
@@ -71,6 +71,10 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
71
71
|
assertEsm(config.root);
|
|
72
72
|
assertVikeCliOrApi(config);
|
|
73
73
|
temp_supportOldInterface(config);
|
|
74
|
+
// Only emit dist/server/entry.mjs if necessary
|
|
75
|
+
if (config.vitePluginServerEntry?.inject &&
|
|
76
|
+
!(0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(config._vikeConfigObject).isPrerenderingEnabled)
|
|
77
|
+
config.vitePluginServerEntry.disableServerEntryEmit = true;
|
|
74
78
|
}
|
|
75
79
|
},
|
|
76
80
|
config: {
|
|
@@ -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);
|
|
@@ -33,4 +33,4 @@ __exportStar(require("../../utils/isArray.js"), exports);
|
|
|
33
33
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
34
34
|
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|
|
35
35
|
__exportStar(require("../../utils/makePublicCopy.js"), exports);
|
|
36
|
-
__exportStar(require("../../utils/
|
|
36
|
+
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
@@ -311,10 +311,14 @@ async function loadBuildEntry(outDir) {
|
|
|
311
311
|
globalObject.buildEntry = globalObject.buildEntryPrevious;
|
|
312
312
|
}
|
|
313
313
|
(0, utils_js_1.assert)(globalObject.buildEntry);
|
|
314
|
-
(0, utils_js_1.assertWarning)(
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
|
|
314
|
+
(0, utils_js_1.assertWarning)(
|
|
315
|
+
// vike-server => `vitePluginServerEntry.inject === true`
|
|
316
|
+
// vike-node => `vitePluginServerEntry.inject === [ 'index' ]`
|
|
317
|
+
globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject !== true,
|
|
318
|
+
/* TO-DO/eventually:
|
|
319
|
+
!!globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject,
|
|
320
|
+
*/
|
|
321
|
+
`Run the built server entry (e.g. ${picocolors_1.default.cyan('$ node dist/server/index.mjs')}) instead of the original server entry (e.g. ${picocolors_1.default.cyan('$ ts-node server/index.ts')})`, { onlyOnce: true });
|
|
318
322
|
}
|
|
319
323
|
const { buildEntry } = globalObject;
|
|
320
324
|
assertBuildEntry(buildEntry);
|
|
@@ -51,7 +51,7 @@ __exportStar(require("../../utils/urlToFile.js"), exports);
|
|
|
51
51
|
__exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
52
52
|
__exportStar(require("../../utils/freezePartial.js"), exports);
|
|
53
53
|
__exportStar(require("../../utils/isNpmPackage.js"), exports);
|
|
54
|
-
__exportStar(require("../../utils/
|
|
54
|
+
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
55
55
|
__exportStar(require("../../utils/isScriptFile.js"), exports);
|
|
56
56
|
__exportStar(require("../../utils/removeFileExtention.js"), exports);
|
|
57
57
|
__exportStar(require("../../utils/objectKeys.js"), exports);
|
|
@@ -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
|
}
|
|
@@ -28,6 +28,6 @@ __exportStar(require("../../utils/parseUrl.js"), exports);
|
|
|
28
28
|
__exportStar(require("../../utils/parseUrl-extras.js"), exports);
|
|
29
29
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
30
30
|
__exportStar(require("../../utils/assertIsNotBrowser.js"), exports);
|
|
31
|
-
__exportStar(require("../../utils/
|
|
31
|
+
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/unique.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/debug.js"), exports);
|
|
@@ -6,32 +6,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.isVirtualFileId = isVirtualFileId;
|
|
7
7
|
exports.getVirtualFileId = getVirtualFileId;
|
|
8
8
|
exports.resolveVirtualFileId = resolveVirtualFileId;
|
|
9
|
+
exports.removeVirtualIdTag = removeVirtualIdTag;
|
|
9
10
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
10
11
|
const utils_js_1 = require("./utils.js");
|
|
11
12
|
const idBase = 'virtual:vike:';
|
|
12
13
|
// https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention
|
|
13
|
-
const
|
|
14
|
+
const virtualIdTag = '\0';
|
|
14
15
|
function isVirtualFileId(id) {
|
|
15
16
|
if (id.startsWith(idBase))
|
|
16
17
|
return true;
|
|
17
|
-
if (id.startsWith(
|
|
18
|
+
if (id.startsWith(virtualIdTag + idBase))
|
|
18
19
|
return true;
|
|
19
20
|
// https://github.com/vikejs/vike/issues/1985
|
|
20
21
|
(0, utils_js_1.assertUsage)(!id.includes(idBase), `Encountered a module ID ${picocolors_1.default.cyan(id)} that is unexpected. Are you using a tool that modifies the ID of modules? For example, the baseUrl setting in tsconfig.json cannot be used.`);
|
|
21
22
|
return false;
|
|
22
23
|
}
|
|
23
24
|
function getVirtualFileId(id) {
|
|
24
|
-
|
|
25
|
-
id = id.slice(tag.length);
|
|
26
|
-
}
|
|
27
|
-
(0, utils_js_1.assert)(!id.startsWith(tag));
|
|
28
|
-
return id;
|
|
25
|
+
return removeVirtualIdTag(id);
|
|
29
26
|
}
|
|
30
27
|
function resolveVirtualFileId(id) {
|
|
31
28
|
(0, utils_js_1.assert)(isVirtualFileId(id));
|
|
32
|
-
if (!id.startsWith(
|
|
33
|
-
id =
|
|
29
|
+
if (!id.startsWith(virtualIdTag)) {
|
|
30
|
+
id = virtualIdTag + id;
|
|
31
|
+
}
|
|
32
|
+
(0, utils_js_1.assert)(id.startsWith(virtualIdTag));
|
|
33
|
+
return id;
|
|
34
|
+
}
|
|
35
|
+
function removeVirtualIdTag(id) {
|
|
36
|
+
if (id.startsWith(virtualIdTag)) {
|
|
37
|
+
id = id.slice(virtualIdTag.length);
|
|
34
38
|
}
|
|
35
|
-
(0, utils_js_1.assert)(id.startsWith(
|
|
39
|
+
(0, utils_js_1.assert)(!id.startsWith(virtualIdTag));
|
|
36
40
|
return id;
|
|
37
41
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.modifyUrl = modifyUrl;
|
|
4
|
+
const modifyUrlSameOrigin_js_1 = require("./modifyUrlSameOrigin.js");
|
|
4
5
|
const utils_js_1 = require("./utils.js");
|
|
5
6
|
/**
|
|
6
7
|
* Modify a URL.
|
|
@@ -10,9 +11,8 @@ const utils_js_1 = require("./utils.js");
|
|
|
10
11
|
* https://vike.dev/modifyUrl
|
|
11
12
|
*/
|
|
12
13
|
function modifyUrl(url, modify) {
|
|
14
|
+
url = (0, modifyUrlSameOrigin_js_1.modifyUrlSameOrigin)(url, modify);
|
|
13
15
|
const urlParsed = (0, utils_js_1.parseUrl)(url, '/');
|
|
14
|
-
// Pathname
|
|
15
|
-
const pathname = modify.pathname ?? urlParsed.pathname;
|
|
16
16
|
// Origin
|
|
17
17
|
const originParts = [
|
|
18
18
|
modify.protocol ?? urlParsed.protocol ?? '',
|
|
@@ -23,8 +23,6 @@ function modifyUrl(url, modify) {
|
|
|
23
23
|
originParts.push(`:${port}`);
|
|
24
24
|
}
|
|
25
25
|
const origin = originParts.join('');
|
|
26
|
-
const urlModified = (0, utils_js_1.createUrlFromComponents)(origin, pathname,
|
|
27
|
-
// Should we also support modifying search and hash?
|
|
28
|
-
urlParsed.searchOriginal, urlParsed.hashOriginal);
|
|
26
|
+
const urlModified = (0, utils_js_1.createUrlFromComponents)(origin, urlParsed.pathname, urlParsed.searchOriginal, urlParsed.hashOriginal);
|
|
29
27
|
return urlModified;
|
|
30
28
|
}
|