vike 0.4.225 → 0.4.226-commit-a0035ee
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/client/shared/getPageContextProxyForUser.js +3 -66
- 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 +55 -30
- package/dist/cjs/node/api/prerender.js +2 -3
- package/dist/cjs/node/api/preview.js +27 -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 +3 -3
- 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 +16 -8
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
- package/dist/cjs/node/plugin/plugins/fileEnv.js +3 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +14 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +99 -85
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +10 -1
- package/dist/cjs/node/plugin/shared/getEnvVarObject.js +7 -0
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +3 -3
- package/dist/cjs/node/prerender/runPrerender.js +14 -19
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +13 -8
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +67 -14
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +3 -2
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
- package/dist/cjs/node/runtime/renderPage.js +13 -28
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +2 -2
- package/dist/cjs/node/shared/assertV1Design.js +1 -1
- package/dist/cjs/node/shared/utils.js +1 -1
- package/dist/cjs/node/shared/virtual-files.js +14 -10
- package/dist/cjs/shared/NOT_SERIALIZABLE.js +5 -0
- package/dist/cjs/shared/modifyUrl.js +3 -5
- package/dist/cjs/shared/modifyUrlSameOrigin.js +42 -0
- package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +3 -2
- package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +5 -5
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -9
- package/dist/cjs/shared/utils.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +10 -3
- package/dist/cjs/utils/assertSetup.js +12 -8
- package/dist/cjs/utils/assertSingleInstance.js +19 -4
- package/dist/cjs/utils/getRandomId.js +1 -1
- package/dist/cjs/utils/isNullish.js +16 -0
- package/dist/cjs/utils/normalizeHeaders.js +1 -1
- package/dist/cjs/utils/objectAssign.js +7 -2
- package/dist/cjs/utils/objectFilter.js +10 -0
- package/dist/cjs/utils/pick.js +12 -0
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +3 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
- 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/client/client-routing-runtime/renderPageClientSide.js +1 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +6 -3
- package/dist/esm/client/server-routing-runtime/getPageContext.js +6 -3
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +1 -11
- package/dist/esm/client/shared/getPageContextProxyForUser.js +4 -67
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- 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 +57 -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 +24 -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 +3 -3
- 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 +9 -2
- package/dist/esm/node/plugin/plugins/commonConfig.js +16 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
- package/dist/esm/node/plugin/plugins/fileEnv.js +3 -0
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +15 -11
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +5 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +11 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +101 -86
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +11 -2
- package/dist/esm/node/plugin/shared/getEnvVarObject.js +7 -0
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +3 -3
- package/dist/esm/node/prerender/runPrerender.d.ts +1 -1
- package/dist/esm/node/prerender/runPrerender.js +14 -19
- 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 +13 -8
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -0
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +69 -15
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +3 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +27 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
- package/dist/esm/node/runtime/renderPage.js +14 -29
- 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/assertV1Design.js +1 -1
- 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/NOT_SERIALIZABLE.d.ts +1 -0
- package/dist/esm/shared/NOT_SERIALIZABLE.js +2 -0
- 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 +11 -3
- package/dist/esm/shared/page-configs/PageConfig.d.ts +2 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +3 -1
- package/dist/esm/shared/page-configs/getConfigDefinedAt.js +3 -2
- package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +5 -5
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +9 -9
- package/dist/esm/shared/route/abort.d.ts +2 -2
- package/dist/esm/shared/types.d.ts +39 -3
- 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/assert.d.ts +2 -1
- package/dist/esm/utils/assert.js +10 -3
- package/dist/esm/utils/assertSetup.d.ts +2 -2
- package/dist/esm/utils/assertSetup.js +12 -8
- package/dist/esm/utils/assertSingleInstance.js +19 -4
- package/dist/esm/utils/getRandomId.d.ts +1 -1
- package/dist/esm/utils/getRandomId.js +1 -1
- package/dist/esm/utils/isNullish.d.ts +3 -0
- package/dist/esm/utils/isNullish.js +11 -0
- package/dist/esm/utils/normalizeHeaders.js +1 -1
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +7 -2
- 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 +4 -2
- package/dist/cjs/shared/notSerializable.js +0 -5
- package/dist/cjs/utils/isNotNullish.js +0 -5
- package/dist/esm/shared/notSerializable.d.ts +0 -1
- package/dist/esm/shared/notSerializable.js +0 -2
- package/dist/esm/utils/isNotNullish.d.ts +0 -1
- package/dist/esm/utils/isNotNullish.js +0 -1
|
@@ -2,78 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getPageContextProxyForUser = getPageContextProxyForUser;
|
|
4
4
|
const utils_js_1 = require("../server-routing-runtime/utils.js");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Throw error when pageContext value isn't:
|
|
9
|
-
* - serializable, or
|
|
10
|
-
* - defined.
|
|
11
|
-
*/
|
|
5
|
+
const NOT_SERIALIZABLE_js_1 = require("../../shared/NOT_SERIALIZABLE.js");
|
|
6
|
+
// Throw error when pageContext value isn't serializable
|
|
12
7
|
function getPageContextProxyForUser(pageContext) {
|
|
13
|
-
(0, utils_js_1.assert)([true, false].includes(pageContext._hasPageContextFromServer));
|
|
14
|
-
(0, utils_js_1.assert)([true, false].includes(pageContext._hasPageContextFromClient));
|
|
15
8
|
return new Proxy(pageContext, {
|
|
16
9
|
get(_, prop) {
|
|
17
10
|
const val = pageContext[prop];
|
|
18
11
|
const propName = (0, utils_js_1.getPropAccessNotation)(prop);
|
|
19
|
-
(0, utils_js_1.assertUsage)(val !==
|
|
20
|
-
passToClientHint(pageContext, prop, propName);
|
|
12
|
+
(0, utils_js_1.assertUsage)(val !== NOT_SERIALIZABLE_js_1.NOT_SERIALIZABLE, `Can't access pageContext${propName} on the client side. Because it can't be serialized, see server logs.`);
|
|
21
13
|
return val;
|
|
22
14
|
}
|
|
23
15
|
});
|
|
24
16
|
}
|
|
25
|
-
function passToClientHint(pageContext, prop, propName) {
|
|
26
|
-
if (handleVueReactivity(prop))
|
|
27
|
-
return;
|
|
28
|
-
// `prop in pageContext` is the trick we use to know the passToClient value on the client-side, as we set a value to all passToClient props, even `undefined` ones:
|
|
29
|
-
// ```html
|
|
30
|
-
// <script id="vike_pageContext" type="application/json">{"pageProps":"!undefined"}</script>
|
|
31
|
-
// ```
|
|
32
|
-
if (prop in pageContext)
|
|
33
|
-
return;
|
|
34
|
-
if (isWhitelisted(prop))
|
|
35
|
-
return;
|
|
36
|
-
// The trick described above (`prop in pageContext`) doesn't work if Vike doesn't fetch any pageContext from the server.
|
|
37
|
-
// - There would still be some value to show a warning, but it isn't worth it because of the confusion that the first recommendation (adding `prop` to `passToClient`) wouldn't actually remove the warning, and only the second recommendation (using `prop in pageContext` instead of `pageContext[prop]`) would work.
|
|
38
|
-
if (!pageContext._hasPageContextFromServer)
|
|
39
|
-
return;
|
|
40
|
-
const errMsg = `pageContext${propName} isn't defined on the client-side, see https://vike.dev/passToClient#error`;
|
|
41
|
-
if (
|
|
42
|
-
// TODO/next-major-release always make it an error.
|
|
43
|
-
// - Remove pageContext._hasPageContextFromClient logic (IIRC this is its only use case).
|
|
44
|
-
pageContext._hasPageContextFromClient) {
|
|
45
|
-
(0, utils_js_1.assertWarning)(false, errMsg, { onlyOnce: false, showStackTrace: true });
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
(0, utils_js_1.assertUsage)(false, errMsg);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
const WHITELIST = [
|
|
52
|
-
'then',
|
|
53
|
-
// Vue calls toJSON()
|
|
54
|
-
'toJSON'
|
|
55
|
-
];
|
|
56
|
-
function isWhitelisted(prop) {
|
|
57
|
-
if (WHITELIST.includes(prop))
|
|
58
|
-
return true;
|
|
59
|
-
if (typeof prop === 'symbol')
|
|
60
|
-
return true; // Vue tries to access some symbols
|
|
61
|
-
if (typeof prop !== 'string')
|
|
62
|
-
return true;
|
|
63
|
-
if (prop.startsWith('__v_'))
|
|
64
|
-
return true; // Vue internals upon `reactive(pageContext)`
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
// Handle Vue's reactivity.
|
|
68
|
-
// When changing a reactive object:
|
|
69
|
-
// - Vue tries to read its old value first. This triggers a `assertIsDefined()` failure if e.g. `pageContextReactive.routeParams = pageContextNew.routeParams` and `pageContextReactive` has no `routeParams`.
|
|
70
|
-
// - Vue seems to read __v_raw before reading the property.
|
|
71
|
-
function handleVueReactivity(prop) {
|
|
72
|
-
if (globalObject.prev === prop || globalObject.prev === '__v_raw')
|
|
73
|
-
return true;
|
|
74
|
-
globalObject.prev = prop;
|
|
75
|
-
window.setTimeout(() => {
|
|
76
|
-
globalObject.prev = undefined;
|
|
77
|
-
}, 0);
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
@@ -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
|
|
@@ -47,56 +47,80 @@ const path_1 = __importDefault(require("path"));
|
|
|
47
47
|
const utils_js_1 = require("./utils.js");
|
|
48
48
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
49
49
|
const globalContext_js_1 = require("../runtime/globalContext.js");
|
|
50
|
+
const getEnvVarObject_js_1 = require("../plugin/shared/getEnvVarObject.js");
|
|
50
51
|
const globalObject = (0, utils_js_1.getGlobalObject)('api/prepareViteApiCall.ts', {});
|
|
51
52
|
async function prepareViteApiCall(options, operation) {
|
|
52
53
|
clear();
|
|
53
54
|
(0, context_js_1.setContextApiOperation)(operation, options);
|
|
54
|
-
const
|
|
55
|
-
return
|
|
55
|
+
const viteConfigFromUserApiOptions = options.viteConfig;
|
|
56
|
+
return resolveConfigs(viteConfigFromUserApiOptions, operation);
|
|
56
57
|
}
|
|
57
58
|
// For subsequent API calls, e.g. calling prerender() after build()
|
|
58
59
|
function clear() {
|
|
59
60
|
(0, context_js_1.clearContextApiOperation)();
|
|
60
61
|
(0, globalContext_js_1.clearGlobalContext)();
|
|
61
62
|
}
|
|
62
|
-
async function
|
|
63
|
-
const viteInfo = await
|
|
64
|
-
await assertViteRoot2(viteInfo.root, viteInfo.viteConfigEnhanced, operation);
|
|
63
|
+
async function resolveConfigs(viteConfigFromUserApiOptions, operation) {
|
|
64
|
+
const viteInfo = await getViteInfo(viteConfigFromUserApiOptions, operation);
|
|
65
65
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig2)(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
|
|
66
|
-
const
|
|
66
|
+
const viteConfigFromUserEnhanced = applyVikeViteConfig(viteInfo.viteConfigFromUserEnhanced, vikeConfig);
|
|
67
|
+
const { viteConfigResolved } = await assertViteRoot2(viteInfo.root, viteConfigFromUserEnhanced, operation);
|
|
67
68
|
return {
|
|
68
69
|
vikeConfig,
|
|
69
|
-
|
|
70
|
+
viteConfigResolved, // ONLY USE if strictly necessary. (We plan to remove assertViteRoot2() as explained in the comments of that function.)
|
|
71
|
+
viteConfigFromUserEnhanced
|
|
70
72
|
};
|
|
71
73
|
}
|
|
72
|
-
|
|
74
|
+
// Apply +vite
|
|
75
|
+
// - For example, Vike extensions adding Vite plugins
|
|
76
|
+
function applyVikeViteConfig(viteConfigFromUserEnhanced, vikeConfig) {
|
|
73
77
|
const viteConfigs = vikeConfig.global._from.configsCumulative.vite;
|
|
74
78
|
if (!viteConfigs)
|
|
75
|
-
return
|
|
79
|
+
return viteConfigFromUserEnhanced;
|
|
76
80
|
viteConfigs.values.forEach((v) => {
|
|
77
81
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(v.value), `${v.definedAt} should be an object`);
|
|
78
|
-
|
|
82
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, v.value);
|
|
79
83
|
(0, utils_js_1.assertUsage)(!findVikeVitePlugin(v.value), "Using the +vite setting to add Vike's Vite plugin is forbidden");
|
|
80
84
|
});
|
|
81
|
-
return
|
|
85
|
+
return viteConfigFromUserEnhanced;
|
|
82
86
|
}
|
|
83
87
|
async function getViteRoot(operation) {
|
|
84
88
|
if (!globalObject.root)
|
|
85
|
-
await
|
|
89
|
+
await getViteInfo(undefined, operation);
|
|
86
90
|
(0, utils_js_1.assert)(globalObject.root);
|
|
87
91
|
return globalObject.root;
|
|
88
92
|
}
|
|
89
|
-
async function
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
//
|
|
93
|
+
async function getViteInfo(viteConfigFromUserApiOptions, operation) {
|
|
94
|
+
let viteConfigFromUserEnhanced = viteConfigFromUserApiOptions;
|
|
95
|
+
// Precedence:
|
|
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
|
|
108
|
+
const viteConfigFromUserEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VITE_CONFIG');
|
|
109
|
+
if (viteConfigFromUserEnvVar) {
|
|
110
|
+
viteConfigFromUserEnhanced = (0, vite_1.mergeConfig)(viteConfigFromUserEnhanced ?? {}, viteConfigFromUserEnvVar);
|
|
111
|
+
}
|
|
112
|
+
// Resolve vite.config.js
|
|
113
|
+
const viteConfigFromUserViteFile = await loadViteConfigFile(viteConfigFromUserEnhanced, operation);
|
|
114
|
+
// Correct precedence, replicates Vite:
|
|
93
115
|
// https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1001
|
|
94
|
-
|
|
116
|
+
const viteConfigResolved = (0, vite_1.mergeConfig)(viteConfigFromUserViteFile ?? {}, viteConfigFromUserEnhanced ?? {});
|
|
117
|
+
const root = normalizeViteRoot(viteConfigResolved.root ?? process.cwd());
|
|
95
118
|
globalObject.root = root;
|
|
119
|
+
// - Find options `vike(options)` set in vite.config.js
|
|
120
|
+
// - TODO/next-major: remove
|
|
121
|
+
// - Add Vike's Vite plugin if missing
|
|
96
122
|
let vikeVitePluginOptions;
|
|
97
|
-
|
|
98
|
-
// If Vike's Vite plugin is found in both viteConfigFromOptions and viteConfigFromUserViteFile then Vike will later throw an error
|
|
99
|
-
const found = findVikeVitePlugin(viteConfigFromOptions) || findVikeVitePlugin(viteConfigFromUserViteFile);
|
|
123
|
+
const found = findVikeVitePlugin(viteConfigResolved);
|
|
100
124
|
if (found) {
|
|
101
125
|
vikeVitePluginOptions = found.vikeVitePluginOptions;
|
|
102
126
|
}
|
|
@@ -104,16 +128,16 @@ async function getInfoFromVite(viteConfigFromOptions, operation) {
|
|
|
104
128
|
// Add Vike to plugins if not present.
|
|
105
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.
|
|
106
130
|
const { plugin: vikePlugin } = await Promise.resolve().then(() => __importStar(require('../plugin/index.js')));
|
|
107
|
-
|
|
108
|
-
...
|
|
109
|
-
plugins: [...(
|
|
131
|
+
viteConfigFromUserEnhanced = {
|
|
132
|
+
...viteConfigFromUserEnhanced,
|
|
133
|
+
plugins: [...(viteConfigFromUserEnhanced?.plugins ?? []), vikePlugin()]
|
|
110
134
|
};
|
|
111
|
-
const res = findVikeVitePlugin(
|
|
135
|
+
const res = findVikeVitePlugin(viteConfigFromUserEnhanced);
|
|
112
136
|
(0, utils_js_1.assert)(res);
|
|
113
137
|
vikeVitePluginOptions = res.vikeVitePluginOptions;
|
|
114
138
|
}
|
|
115
139
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
116
|
-
return { root, vikeVitePluginOptions,
|
|
140
|
+
return { root, vikeVitePluginOptions, viteConfigFromUserEnhanced };
|
|
117
141
|
}
|
|
118
142
|
function findVikeVitePlugin(viteConfig) {
|
|
119
143
|
let vikeVitePluginOptions;
|
|
@@ -131,8 +155,8 @@ function findVikeVitePlugin(viteConfig) {
|
|
|
131
155
|
return { vikeVitePluginOptions };
|
|
132
156
|
}
|
|
133
157
|
// Copied from https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L961-L1005
|
|
134
|
-
async function loadViteConfigFile(
|
|
135
|
-
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(
|
|
158
|
+
async function loadViteConfigFile(viteConfigFromUserApiOptions, operation) {
|
|
159
|
+
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(viteConfigFromUserApiOptions, operation);
|
|
136
160
|
let config = inlineConfig;
|
|
137
161
|
let mode = inlineConfig.mode || defaultMode;
|
|
138
162
|
const configEnv = {
|
|
@@ -164,11 +188,12 @@ function normalizeViteRoot(root) {
|
|
|
164
188
|
path_1.default.resolve(root));
|
|
165
189
|
}
|
|
166
190
|
const errMsg = `A Vite plugin is modifying Vite's setting ${picocolors_1.default.cyan('root')} which is forbidden`;
|
|
167
|
-
async function assertViteRoot2(root,
|
|
168
|
-
const args = getResolveConfigArgs(
|
|
169
|
-
// 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.
|
|
170
194
|
const viteConfigResolved = await (0, vite_1.resolveConfig)(...args);
|
|
171
195
|
(0, utils_js_1.assertUsage)(normalizeViteRoot(viteConfigResolved.root) === normalizeViteRoot(root), errMsg);
|
|
196
|
+
return { viteConfigResolved };
|
|
172
197
|
}
|
|
173
198
|
function assertViteRoot(root, config) {
|
|
174
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,39 @@
|
|
|
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"));
|
|
14
|
+
const utils_js_2 = require("../runtime/utils.js");
|
|
6
15
|
/**
|
|
7
16
|
* Programmatically trigger `$ vike preview`
|
|
8
17
|
*
|
|
9
18
|
* https://vike.dev/api#preview
|
|
10
19
|
*/
|
|
11
20
|
async function preview(options = {}) {
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
(0, utils_js_2.onSetupPreview)();
|
|
22
|
+
const { viteConfigFromUserEnhanced, viteConfigResolved } = await (0, prepareViteApiCall_js_1.prepareViteApiCall)(options, 'preview');
|
|
23
|
+
if (viteConfigResolved.vitePluginServerEntry?.inject) {
|
|
24
|
+
const outDir = (0, getOutDirs_js_1.getOutDirs)(viteConfigResolved).outDirRoot;
|
|
25
|
+
const { outServerIndex } = await (0, runtime_1.importServerProductionIndex)({ outDir });
|
|
26
|
+
const outServerIndexRelative = node_path_1.default.relative(viteConfigResolved.root, outServerIndex);
|
|
27
|
+
(0, utils_js_1.assertWarning)(false, `Never run ${picocolors_1.default.cyan('$ vike preview')} in production, run ${picocolors_1.default.cyan(`$ node ${outServerIndexRelative}`)} instead (or Bun/Deno).`, { onlyOnce: true });
|
|
28
|
+
return {
|
|
29
|
+
viteConfig: viteConfigResolved
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const server = await (0, vite_1.preview)(viteConfigFromUserEnhanced);
|
|
34
|
+
return {
|
|
35
|
+
viteServer: server,
|
|
36
|
+
viteConfig: server.config
|
|
37
|
+
};
|
|
38
|
+
}
|
|
18
39
|
}
|
|
@@ -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);
|
|
@@ -95,7 +95,7 @@ async function triggerFullBuild(config, vikeConfig, viteEnv, bundle) {
|
|
|
95
95
|
// The server bulid is already called by builder.buildApp()
|
|
96
96
|
}
|
|
97
97
|
if ((0, context_js_1.isPrerenderAutoRunEnabled)(vikeConfig)) {
|
|
98
|
-
const res = await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline
|
|
98
|
+
const res = await (0, runPrerender_js_1.runPrerenderFromAutoRun)(configInline);
|
|
99
99
|
forceExit = res.forceExit;
|
|
100
100
|
}
|
|
101
101
|
}
|
|
@@ -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
|
}
|
|
@@ -5,14 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.commonConfig = commonConfig;
|
|
7
7
|
exports.getVikeConfigPublic = getVikeConfigPublic;
|
|
8
|
-
const vite_1 = require("vite");
|
|
9
8
|
const utils_js_1 = require("../utils.js");
|
|
10
9
|
const pluginBuildConfig_js_1 = require("./build/pluginBuildConfig.js");
|
|
11
10
|
const require_shim_1 = require("@brillout/require-shim");
|
|
12
11
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
13
12
|
const path_1 = __importDefault(require("path"));
|
|
14
13
|
const assertResolveAlias_js_1 = require("./commonConfig/assertResolveAlias.js");
|
|
15
|
-
const getEnvVarObject_js_1 = require("../shared/getEnvVarObject.js");
|
|
16
14
|
const isViteCliCall_js_1 = require("../shared/isViteCliCall.js");
|
|
17
15
|
const context_js_1 = require("../../api/context.js");
|
|
18
16
|
const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
|
|
@@ -21,6 +19,8 @@ const context_js_2 = require("../../prerender/context.js");
|
|
|
21
19
|
const resolvePrerenderConfig_js_1 = require("../../prerender/resolvePrerenderConfig.js");
|
|
22
20
|
const pluginName = 'vike:commonConfig';
|
|
23
21
|
function commonConfig(vikeVitePluginOptions) {
|
|
22
|
+
// We cache it => makes sure we only generate one object => we can mutate it at runPrerender()
|
|
23
|
+
let prerenderContext;
|
|
24
24
|
return [
|
|
25
25
|
{
|
|
26
26
|
name: `${pluginName}:pre`,
|
|
@@ -33,6 +33,9 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
33
33
|
const root = configFromUser.root ? (0, prepareViteApiCall_js_1.normalizeViteRoot)(configFromUser.root) : await (0, prepareViteApiCall_js_1.getViteRoot)(operation);
|
|
34
34
|
(0, utils_js_1.assert)(root);
|
|
35
35
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig2)(root, isDev, vikeVitePluginOptions);
|
|
36
|
+
const { isPrerenderingEnabled } = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
|
|
37
|
+
prerenderContext ?? (prerenderContext = { isPrerenderingEnabled, output: null, pageContexts: null });
|
|
38
|
+
(0, utils_js_1.assert)(prerenderContext.isPrerenderingEnabled === isPrerenderingEnabled);
|
|
36
39
|
return {
|
|
37
40
|
_isDev: isDev,
|
|
38
41
|
_root: root,
|
|
@@ -40,11 +43,12 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
40
43
|
_vikeConfigObject: vikeConfig,
|
|
41
44
|
_vike: {
|
|
42
45
|
pages: vikeConfig.pages,
|
|
43
|
-
config: vikeConfig.global.config
|
|
46
|
+
config: vikeConfig.global.config,
|
|
47
|
+
prerenderContext
|
|
44
48
|
},
|
|
45
49
|
// TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
|
|
46
50
|
configVikePromise: Promise.resolve({
|
|
47
|
-
prerender:
|
|
51
|
+
prerender: isPrerenderingEnabled
|
|
48
52
|
})
|
|
49
53
|
};
|
|
50
54
|
}
|
|
@@ -73,6 +77,7 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
73
77
|
assertEsm(config.root);
|
|
74
78
|
assertVikeCliOrApi(config);
|
|
75
79
|
temp_supportOldInterface(config);
|
|
80
|
+
emitServerEntryOnlyIfNeeded(config);
|
|
76
81
|
}
|
|
77
82
|
},
|
|
78
83
|
config: {
|
|
@@ -96,10 +101,6 @@ function commonConfig(vikeVitePluginOptions) {
|
|
|
96
101
|
// Set `--host` for Docker/Podman
|
|
97
102
|
setDefault('host', true, configFromUser, configFromVike);
|
|
98
103
|
}
|
|
99
|
-
// VITE_CONFIG
|
|
100
|
-
const configFromEnvVar = (0, getEnvVarObject_js_1.getEnvVarObject)('VITE_CONFIG');
|
|
101
|
-
if (configFromEnvVar)
|
|
102
|
-
configFromVike = (0, vite_1.mergeConfig)(configFromVike, configFromEnvVar);
|
|
103
104
|
return configFromVike;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
@@ -202,3 +203,10 @@ function getVikeConfigPublic(config) {
|
|
|
202
203
|
(0, utils_js_1.assert)(vikeConfig);
|
|
203
204
|
return vikeConfig;
|
|
204
205
|
}
|
|
206
|
+
// Only emit dist/server/entry.mjs if necessary
|
|
207
|
+
function emitServerEntryOnlyIfNeeded(config) {
|
|
208
|
+
if (config.vitePluginServerEntry?.inject &&
|
|
209
|
+
!(0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(config._vikeConfigObject).isPrerenderingEnabled) {
|
|
210
|
+
config.vitePluginServerEntry.disableServerEntryEmit = true;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
@@ -52,18 +52,18 @@ async function getPageDeps(config, pageConfigs) {
|
|
|
52
52
|
.forEach((configValueSource) => {
|
|
53
53
|
if (!configValueSource.valueIsLoadedWithImport && !configValueSource.valueIsFilePath)
|
|
54
54
|
return;
|
|
55
|
-
const {
|
|
55
|
+
const { definedAt, configEnv } = configValueSource;
|
|
56
56
|
if (!configEnv.client)
|
|
57
57
|
return;
|
|
58
|
-
if (
|
|
58
|
+
if (definedAt.definedBy)
|
|
59
59
|
return;
|
|
60
|
-
if (
|
|
60
|
+
if (definedAt.filePathAbsoluteUserRootDir !== null) {
|
|
61
61
|
// Vite expects entries to be filesystem absolute paths (surprisingly so).
|
|
62
|
-
addEntry(
|
|
62
|
+
addEntry(definedAt.filePathAbsoluteFilesystem);
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
65
|
// Adding definedAtFilePath.filePathAbsoluteFilesystem doesn't work for npm packages, I guess because of Vite's config.server.fs.allow
|
|
66
|
-
addInclude(
|
|
66
|
+
addInclude(definedAt.importPathAbsolute);
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
69
|
});
|
|
@@ -12,6 +12,7 @@ const getFilePath_js_1 = require("../shared/getFilePath.js");
|
|
|
12
12
|
const rollupSourceMap_js_1 = require("../shared/rollupSourceMap.js");
|
|
13
13
|
const parseEsModule_js_1 = require("../shared/parseEsModule.js");
|
|
14
14
|
const normalizeId_js_1 = require("../shared/normalizeId.js");
|
|
15
|
+
const getVikeConfig_js_1 = require("./importUserCode/v1-design/getVikeConfig.js");
|
|
15
16
|
function fileEnv() {
|
|
16
17
|
let config;
|
|
17
18
|
let viteDevServer;
|
|
@@ -21,6 +22,8 @@ function fileEnv() {
|
|
|
21
22
|
// In build, we use generateBundle() instead of the load() hook. Using load() works for dynamic imports in dev thanks to Vite's lazy transpiling, but it doesn't work in build because Rollup transpiles any dynamically imported module even if it's never actually imported.
|
|
22
23
|
if (!viteDevServer)
|
|
23
24
|
return;
|
|
25
|
+
if (!(0, getVikeConfig_js_1.isV1Design)(config))
|
|
26
|
+
return;
|
|
24
27
|
if (skip(id))
|
|
25
28
|
return;
|
|
26
29
|
// For `.vue` files: https://github.com/vikejs/vike/issues/1912#issuecomment-2394981475
|