vike 0.4.259 → 0.4.260
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/AGENTS.md +3 -0
- package/README.md +2 -0
- package/dist/client/runtime-client-routing/renderPageClient.js +1 -1
- package/dist/client/shared/getJsonSerializedInHtml.js +1 -10
- package/dist/node/api/build.js +6 -6
- package/dist/node/api/dev.d.ts +2 -10
- package/dist/node/api/dev.js +5 -52
- package/dist/node/api/prepareViteApiCall.d.ts +1 -1
- package/dist/node/api/prepareViteApiCall.js +2 -2
- package/dist/node/api/prerender.js +2 -2
- package/dist/node/api/preview.d.ts +2 -2
- package/dist/node/api/preview.js +15 -16
- package/dist/node/api/{resolveViteConfigFromUser.d.ts → resolveViteConfigUser.d.ts} +5 -5
- package/dist/node/api/{resolveViteConfigFromUser.js → resolveViteConfigUser.js} +99 -68
- package/dist/node/api/startupLog.d.ts +4 -0
- package/dist/node/api/{getStartupLogFirstLine.js → startupLog.js} +15 -1
- package/dist/node/api/types.d.ts +9 -0
- package/dist/node/cli/entry.js +1 -5
- package/dist/node/cli/parseCli.js +25 -11
- package/dist/node/createDevMiddleware.js +2 -2
- package/dist/node/prerender/runPrerender.d.ts +8 -2
- package/dist/node/prerender/runPrerender.js +3 -1
- package/dist/node/prerender/runPrerenderEntry.js +2 -2
- package/dist/node/vite/index.js +2 -2
- package/dist/node/vite/plugins/build/handleAssetsManifest.d.ts +2 -6
- package/dist/node/vite/plugins/build/handleAssetsManifest.js +16 -9
- package/dist/node/vite/plugins/build/pluginBuildApp.js +10 -5
- package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +6 -1
- package/dist/node/vite/plugins/build/pluginBuildConfig.js +13 -11
- package/dist/node/vite/plugins/build/pluginDistFileNames.js +1 -6
- package/dist/node/vite/plugins/build/pluginModuleBanner.js +2 -4
- package/dist/node/vite/plugins/pluginCommon.d.ts +1 -1
- package/dist/node/vite/plugins/pluginCommon.js +15 -7
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +67 -31
- package/dist/node/vite/plugins/pluginStripPointerImportAttribute.js +31 -10
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +5 -7
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +2 -2
- package/dist/node/vite/shared/addSsrMiddleware.js +1 -1
- package/dist/node/vite/shared/isVite8OrAbove.d.ts +4 -0
- package/dist/node/vite/shared/isVite8OrAbove.js +9 -0
- package/dist/node/vite/shared/isViteCli.d.ts +9 -4
- package/dist/node/vite/shared/isViteCli.js +24 -4
- package/dist/node/vite/shared/loggerDev.js +6 -5
- package/dist/node/vite/shared/resolveVikeConfigInternal/assertExtensions.d.ts +2 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal/assertExtensions.js +6 -5
- package/dist/node/vite/shared/resolveVikeConfigInternal/crawlPlusFilePaths.js +1 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal/getPlusFilesByLocationId.d.ts +3 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal/getPlusFilesByLocationId.js +15 -13
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +15 -15
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +15 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +18 -3
- package/dist/node/vite/shared/resolveVikeConfigInternal.js +213 -72
- package/dist/server/runtime/globalContext.js +4 -1
- package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +12 -3
- package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +2 -3
- package/dist/server/runtime/renderPageServer/html/serializeContext.js +5 -10
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +8 -2
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +32 -8
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +1 -1
- package/dist/server/runtime/renderPageServer.d.ts +8 -2
- package/dist/server/runtime/renderPageServer.js +6 -4
- package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.d.ts +3 -3
- package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.js +8 -1
- package/dist/types/Config.d.ts +34 -6
- package/dist/types/PageConfig.d.ts +11 -9
- package/dist/types/PageContext.d.ts +8 -3
- package/dist/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/utils/PROJECT_VERSION.js +1 -1
- package/dist/utils/assert.d.ts +2 -0
- package/dist/utils/assert.js +8 -8
- package/dist/utils/debug.d.ts +1 -1
- package/dist/utils/debug.js +1 -0
- package/dist/utils/getViteRPC.js +1 -1
- package/dist/utils/objectMap.d.ts +2 -0
- package/dist/utils/objectMap.js +4 -0
- package/dist/utils/parseNpmPackage.js +4 -1
- package/dist/utils/pick.d.ts +1 -1
- package/package.json +13 -15
- package/dist/node/api/getStartupLogFirstLine.d.ts +0 -7
- package/dist/server/__internal/vite.d.ts +0 -2
- package/dist/server/__internal/vite.js +0 -2
- package/dist/server/runtime/renderPageServer/html/injectAssets/sanitizeJson.d.ts +0 -4
- package/dist/server/runtime/renderPageServer/html/injectAssets/sanitizeJson.js +0 -7
package/dist/node/api/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { ApiOptions };
|
|
2
|
+
export type { ApiOptionsStartupLog };
|
|
2
3
|
export type { ApiOperation };
|
|
3
4
|
import type { InlineConfig } from 'vite';
|
|
4
5
|
import type { Config } from '../../types/Config.js';
|
|
@@ -16,4 +17,12 @@ type ApiOptions = {
|
|
|
16
17
|
*/
|
|
17
18
|
vikeConfig?: Config;
|
|
18
19
|
};
|
|
20
|
+
type ApiOptionsStartupLog = {
|
|
21
|
+
/**
|
|
22
|
+
* Whether to print Vike's startup log.
|
|
23
|
+
*
|
|
24
|
+
* https://vike.dev/api
|
|
25
|
+
*/
|
|
26
|
+
startupLog?: boolean;
|
|
27
|
+
};
|
|
19
28
|
type ApiOperation = 'build' | 'dev' | 'preview' | 'prerender';
|
package/dist/node/cli/entry.js
CHANGED
|
@@ -46,11 +46,7 @@ async function cmdBuild() {
|
|
|
46
46
|
}
|
|
47
47
|
async function cmdPreview() {
|
|
48
48
|
try {
|
|
49
|
-
|
|
50
|
-
if (viteServer) {
|
|
51
|
-
viteServer.printUrls();
|
|
52
|
-
viteServer.bindCLIShortcuts({ print: true });
|
|
53
|
-
}
|
|
49
|
+
await preview({ startupLog: true });
|
|
54
50
|
}
|
|
55
51
|
catch (err) {
|
|
56
52
|
console.error(pc.red(`Error while starting preview server:`));
|
|
@@ -29,28 +29,41 @@ function getCommand() {
|
|
|
29
29
|
function getCliOptions() {
|
|
30
30
|
let cliOptions = {};
|
|
31
31
|
let configNameCurrent;
|
|
32
|
-
const
|
|
32
|
+
const addConfig = (configValue) => {
|
|
33
|
+
assert(configNameCurrent);
|
|
34
|
+
cliOptions[configNameCurrent] = configValue;
|
|
35
|
+
configNameCurrent = undefined;
|
|
36
|
+
};
|
|
37
|
+
const addConfigWithoutValue = () => {
|
|
33
38
|
if (configNameCurrent)
|
|
34
|
-
|
|
39
|
+
addConfig(true);
|
|
35
40
|
};
|
|
36
|
-
const
|
|
41
|
+
const addConfigWithValue = (configValueStr) => {
|
|
37
42
|
assert(configNameCurrent);
|
|
38
|
-
|
|
39
|
-
configNameCurrent = undefined;
|
|
43
|
+
addConfig(parseJson5(configValueStr, `CLI option --${configNameCurrent}`));
|
|
40
44
|
};
|
|
41
45
|
for (const arg of process.argv.slice(3)) {
|
|
42
46
|
showHelpOrVersion(arg);
|
|
43
47
|
if (arg.startsWith('--')) {
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
addConfigWithoutValue();
|
|
49
|
+
const str = arg.slice('--'.length);
|
|
50
|
+
const eqIdx = str.indexOf('=');
|
|
51
|
+
if (eqIdx === -1) {
|
|
52
|
+
configNameCurrent = str;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
configNameCurrent = str.slice(0, eqIdx);
|
|
56
|
+
const configValueStr = str.slice(eqIdx + 1);
|
|
57
|
+
addConfigWithValue(configValueStr);
|
|
58
|
+
}
|
|
46
59
|
}
|
|
47
60
|
else {
|
|
48
61
|
if (!configNameCurrent)
|
|
49
62
|
wrongUsage(`Unknown option ${pc.bold(arg)}`);
|
|
50
|
-
|
|
63
|
+
addConfigWithValue(arg);
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
|
-
|
|
66
|
+
addConfigWithoutValue();
|
|
54
67
|
return cliOptions;
|
|
55
68
|
}
|
|
56
69
|
function showHelp() {
|
|
@@ -65,9 +78,10 @@ function showHelp() {
|
|
|
65
78
|
'Common CLI options:',
|
|
66
79
|
[
|
|
67
80
|
`vike dev ${pc.cyan('--host')} ${TAB}${pc.dim('# Make server available over LAN and public addresses')}`,
|
|
68
|
-
`vike dev ${pc.cyan('--port')} 80 ${TAB}${pc.dim('#
|
|
69
|
-
`vike
|
|
81
|
+
`vike dev ${pc.cyan('--port')} 80 ${TAB}${pc.dim('# Set server port')}`,
|
|
82
|
+
`vike dev ${pc.cyan('--root')} src ${TAB}${pc.dim('# Set project root directory')}`,
|
|
70
83
|
`vike dev ${pc.cyan('--force')} ${TAB}${pc.dim("# Disable Vite's cache")}`,
|
|
84
|
+
`vike build ${pc.cyan('--mode')} staging${TAB}${pc.dim('# Set mode (e.g. development, production, staging)')}`,
|
|
71
85
|
]
|
|
72
86
|
.map((o) => ` ${pc.dim('$')} ${o}`)
|
|
73
87
|
.join('\n'),
|
|
@@ -18,8 +18,8 @@ async function createDevMiddleware(options = {}) {
|
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
|
-
const {
|
|
22
|
-
const server = await createServer(
|
|
21
|
+
const { viteConfigUser } = await prepareViteApiCall(optionsMod, 'dev');
|
|
22
|
+
const server = await createServer(viteConfigUser);
|
|
23
23
|
const devMiddleware = server.middlewares;
|
|
24
24
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
25
25
|
}
|
|
@@ -72,7 +72,10 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
72
72
|
isPrerendering: boolean;
|
|
73
73
|
_requestId: number;
|
|
74
74
|
} & import("../../types/PageContext.js").PageContextInit & {
|
|
75
|
-
|
|
75
|
+
_nodeDev?: {
|
|
76
|
+
req: import("http").IncomingMessage;
|
|
77
|
+
res: import("http").ServerResponse;
|
|
78
|
+
};
|
|
76
79
|
_reqWeb?: Request;
|
|
77
80
|
} & {
|
|
78
81
|
_globalContext: ({
|
|
@@ -148,7 +151,10 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
148
151
|
_baseServer: string;
|
|
149
152
|
_baseAssets: string;
|
|
150
153
|
_pageContextInit: import("../../types/PageContext.js").PageContextInit & {
|
|
151
|
-
|
|
154
|
+
_nodeDev?: {
|
|
155
|
+
req: import("http").IncomingMessage;
|
|
156
|
+
res: import("http").ServerResponse;
|
|
157
|
+
};
|
|
152
158
|
_reqWeb?: Request;
|
|
153
159
|
} & {
|
|
154
160
|
headers?: Record<string, unknown>;
|
|
@@ -20,6 +20,7 @@ import { pLimit } from '../../utils/pLimit.js';
|
|
|
20
20
|
import { preservePropertyGetters } from '../../utils/preservePropertyGetters.js';
|
|
21
21
|
import { assertPosixPath } from '../../utils/path.js';
|
|
22
22
|
import { urlToFile } from '../../utils/urlToFile.js';
|
|
23
|
+
import { prependBase } from '../../utils/parseUrl-extras.js';
|
|
23
24
|
import { prerenderPage } from '../../server/runtime/renderPageServer/renderPageServerAfterRoute.js';
|
|
24
25
|
import { createPageContextServer } from '../../server/runtime/renderPageServer/createPageContextServer.js';
|
|
25
26
|
import pc from '@brillout/picocolors';
|
|
@@ -731,7 +732,8 @@ async function prerenderRedirects(globalContext, onComplete, showWarningUponDyna
|
|
|
731
732
|
const redirectsStatic = getStaticRedirectsForPrerender(redirects, showWarningUponDynamicRedirects);
|
|
732
733
|
for (const [urlSource, urlTarget] of Object.entries(redirectsStatic)) {
|
|
733
734
|
const urlOriginal = urlSource;
|
|
734
|
-
const
|
|
735
|
+
const urlTargetWithBase = urlTarget.startsWith('/') ? prependBase(urlTarget, globalContext.baseServer) : urlTarget;
|
|
736
|
+
const htmlString = getRedirectHtml(urlTargetWithBase);
|
|
735
737
|
await onComplete({
|
|
736
738
|
pageContext: { urlOriginal, pageId: null, is404: false, isRedirect: true },
|
|
737
739
|
htmlString,
|
|
@@ -19,8 +19,8 @@ async function runPrerenderFromAPI(options = {}) {
|
|
|
19
19
|
}
|
|
20
20
|
async function runPrerenderFromCLIPrerenderCommand() {
|
|
21
21
|
try {
|
|
22
|
-
const {
|
|
23
|
-
await runPrerender({ viteConfig:
|
|
22
|
+
const { viteConfigUser } = await prepareViteApiCall({}, 'prerender');
|
|
23
|
+
await runPrerender({ viteConfig: viteConfigUser }, '$ vike prerender');
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
26
|
// Error may come from user-land
|
package/dist/node/vite/index.js
CHANGED
|
@@ -37,7 +37,7 @@ import { pluginReplaceConstantsNonRunnableDev } from './plugins/non-runnable-dev
|
|
|
37
37
|
import { isVikeCliOrApi } from '../../shared-server-node/api-context.js';
|
|
38
38
|
import { pluginViteConfigVikeExtensions } from './plugins/pluginViteConfigVikeExtensions.js';
|
|
39
39
|
import { pluginStripPointerImportAttribute } from './plugins/pluginStripPointerImportAttribute.js';
|
|
40
|
-
import { getVikeConfigInternalEarly,
|
|
40
|
+
import { getVikeConfigInternalEarly, isResolvingViteConfigUser } from '../api/resolveViteConfigUser.js';
|
|
41
41
|
import './assertEnvVite.js';
|
|
42
42
|
import { isStorybook } from '../../utils/isStorybook.js';
|
|
43
43
|
import { pluginUniversalDeploy } from './plugins/pluginUniversalDeploy.js';
|
|
@@ -96,7 +96,7 @@ function pluginNonRunnabeDev() {
|
|
|
96
96
|
}
|
|
97
97
|
function removeVitePlugin() {
|
|
98
98
|
// Early resolving of user Vite configs
|
|
99
|
-
if (
|
|
99
|
+
if (isResolvingViteConfigUser()) {
|
|
100
100
|
return true;
|
|
101
101
|
}
|
|
102
102
|
// *****************/
|
|
@@ -4,18 +4,14 @@ export { handleAssetsManifest_isFixEnabled };
|
|
|
4
4
|
export { handleAssetsManifest_assertUsageCssCodeSplit };
|
|
5
5
|
export { handleAssetsManifest_assertUsageCssTarget };
|
|
6
6
|
export { handleAssetsManifest_alignCssTarget };
|
|
7
|
-
import type { Environment, ResolvedConfig, Rollup } from 'vite';
|
|
7
|
+
import type { Environment, ResolvedConfig, Rollup, UserConfig } from 'vite';
|
|
8
8
|
import '../../assertEnvVite.js';
|
|
9
9
|
type Bundle = Rollup.OutputBundle;
|
|
10
10
|
declare function handleAssetsManifest_isFixEnabled(): boolean;
|
|
11
11
|
declare function handleAssetsManifest_assertUsageCssCodeSplit(config: ResolvedConfig): void;
|
|
12
12
|
declare function handleAssetsManifest_alignCssTarget(config: ResolvedConfig): void;
|
|
13
13
|
declare function handleAssetsManifest_assertUsageCssTarget(config: ResolvedConfig, env: Environment): void;
|
|
14
|
-
declare function handleAssetsManifest_getBuildConfig(): Promise<
|
|
15
|
-
readonly ssrEmitAssets: true | undefined;
|
|
16
|
-
readonly cssMinify: "esbuild" | undefined;
|
|
17
|
-
readonly manifest: true;
|
|
18
|
-
}>;
|
|
14
|
+
declare function handleAssetsManifest_getBuildConfig(config: UserConfig): Promise<import("vite").BuildEnvironmentOptions>;
|
|
19
15
|
declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment, options: {
|
|
20
16
|
dir: string | undefined;
|
|
21
17
|
}, bundle: Bundle): Promise<void>;
|
|
@@ -16,6 +16,7 @@ import { pLimit } from '../../../../utils/pLimit.js';
|
|
|
16
16
|
import { unique } from '../../../../utils/unique.js';
|
|
17
17
|
import { parseVirtualFileId } from '../../../../shared-server-node/virtualFileId.js';
|
|
18
18
|
import { getAssetsDir } from '../../shared/getAssetsDir.js';
|
|
19
|
+
import { isVite8OrAbove } from '../../shared/isVite8OrAbove.js';
|
|
19
20
|
import pc from '@brillout/picocolors';
|
|
20
21
|
import { isV1Design } from '../../shared/resolveVikeConfigInternal.js';
|
|
21
22
|
import { getOutDirs } from '../../shared/getOutDirs.js';
|
|
@@ -297,18 +298,24 @@ async function writeManifestFile(manifest, manifestFilePath) {
|
|
|
297
298
|
const manifestFileContent = JSON.stringify(manifest, null, 2);
|
|
298
299
|
await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
|
|
299
300
|
}
|
|
300
|
-
async function handleAssetsManifest_getBuildConfig() {
|
|
301
|
+
async function handleAssetsManifest_getBuildConfig(config) {
|
|
301
302
|
const isFixEnabled = handleAssetsManifest_isFixEnabled();
|
|
302
|
-
|
|
303
|
+
// Set default values (i.e. allow user to override these values)
|
|
304
|
+
const build = {};
|
|
305
|
+
if (isFixEnabled) {
|
|
303
306
|
// https://github.com/vikejs/vike/issues/1339
|
|
304
|
-
ssrEmitAssets
|
|
307
|
+
if (config.build?.ssrEmitAssets === undefined)
|
|
308
|
+
build.ssrEmitAssets = true;
|
|
305
309
|
// Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
|
|
306
|
-
cssMinify
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
if (config.build?.cssMinify === undefined)
|
|
311
|
+
build.cssMinify = isVite8OrAbove(config) ? true : 'esbuild';
|
|
312
|
+
}
|
|
313
|
+
if (config.build?.manifest === undefined)
|
|
314
|
+
build.manifest = true;
|
|
315
|
+
/* Already set by vike:build:pluginBuildApp
|
|
316
|
+
if (config.build?.copyPublicDir === undefined) build.copyPublicDir = !isViteServerSide_viteEnvOptional(config)
|
|
317
|
+
*/
|
|
318
|
+
return build;
|
|
312
319
|
}
|
|
313
320
|
async function handleAssetsManifest(config, viteEnv, options, bundle) {
|
|
314
321
|
const isSsrEnv = isViteServerSide_onlySsrEnv(config, viteEnv);
|
|
@@ -5,7 +5,7 @@ import { assert, assertWarning } from '../../../../utils/assert.js';
|
|
|
5
5
|
import { onSetupBuild } from '../../../../utils/assertSetup.js';
|
|
6
6
|
import { getGlobalObject } from '../../../../utils/getGlobalObject.js';
|
|
7
7
|
import { isPrerenderAutoRunEnabled, wasPrerenderRun } from '../../../prerender/context.js';
|
|
8
|
-
import { isViteCli,
|
|
8
|
+
import { isViteCli, getViteBuildCliArgs } from '../../shared/isViteCli.js';
|
|
9
9
|
import pc from '@brillout/picocolors';
|
|
10
10
|
import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
|
|
11
11
|
import { isVikeCliOrApi } from '../../../../shared-server-node/api-context.js';
|
|
@@ -20,6 +20,7 @@ const globalObject = getGlobalObject('build/pluginBuildApp.ts', {
|
|
|
20
20
|
});
|
|
21
21
|
function pluginBuildApp() {
|
|
22
22
|
let config;
|
|
23
|
+
let alreadyBuilt = false;
|
|
23
24
|
return [
|
|
24
25
|
{
|
|
25
26
|
name: 'vike:build:pluginBuildApp:pre',
|
|
@@ -32,11 +33,15 @@ function pluginBuildApp() {
|
|
|
32
33
|
builder: {
|
|
33
34
|
// Can be overridden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
|
|
34
35
|
async buildApp(builder) {
|
|
36
|
+
if (alreadyBuilt)
|
|
37
|
+
return;
|
|
38
|
+
alreadyBuilt = true;
|
|
35
39
|
assert(builder.environments.client);
|
|
36
40
|
assert(builder.environments.ssr);
|
|
37
41
|
await builder.build(builder.environments.client);
|
|
38
42
|
await builder.build(builder.environments.ssr);
|
|
39
43
|
if (isPrerenderForceExit()) {
|
|
44
|
+
await builder.buildApp();
|
|
40
45
|
runPrerender_forceExit();
|
|
41
46
|
assert(false);
|
|
42
47
|
}
|
|
@@ -141,7 +146,7 @@ async function triggerPrerendering(config, viteEnv, bundle) {
|
|
|
141
146
|
}
|
|
142
147
|
async function abortViteBuildSsr() {
|
|
143
148
|
const vikeConfig = await getVikeConfigInternal();
|
|
144
|
-
if (vikeConfig.config.disableAutoFullBuild !== true && isViteCli() &&
|
|
149
|
+
if (vikeConfig.config.disableAutoFullBuild !== true && isViteCli() && getViteBuildCliArgs()?.build.ssr) {
|
|
145
150
|
assertWarning(false, `The CLI call ${pc.cyan('$ vite build --ssr')} is superfluous since ${pc.cyan('$ vite build')} also builds the server-side. If you want two separate build steps then use https://vike.dev/disableAutoFullBuild or use Vite's ${pc.cyan('build()')} API.`, { onlyOnce: true });
|
|
146
151
|
process.exit(0);
|
|
147
152
|
}
|
|
@@ -160,9 +165,9 @@ function isPrerenderForceExit() {
|
|
|
160
165
|
return globalObject.forceExit;
|
|
161
166
|
}
|
|
162
167
|
function getFullBuildInlineConfig(config) {
|
|
163
|
-
const configFromCli = !isViteCli() ? null :
|
|
164
|
-
if (config.
|
|
165
|
-
return config.
|
|
168
|
+
const configFromCli = !isViteCli() ? null : getViteBuildCliArgs();
|
|
169
|
+
if (config._viteConfigUser) {
|
|
170
|
+
return config._viteConfigUser;
|
|
166
171
|
}
|
|
167
172
|
else {
|
|
168
173
|
return {
|
|
@@ -3,11 +3,16 @@ export { assertRollupInput };
|
|
|
3
3
|
export { analyzeClientEntries };
|
|
4
4
|
import type { ResolvedConfig, Plugin } from 'vite';
|
|
5
5
|
import type { PageConfigBuildTime } from '../../../../types/PageConfig.js';
|
|
6
|
+
import type { FilePath } from '../../../../types/FilePath.js';
|
|
6
7
|
import '../../assertEnvVite.js';
|
|
7
8
|
declare function pluginBuildConfig(): Plugin[];
|
|
9
|
+
type ClientEntry = {
|
|
10
|
+
entryTarget: string;
|
|
11
|
+
entryFilePath: null | FilePath;
|
|
12
|
+
};
|
|
8
13
|
declare function analyzeClientEntries(pageConfigs: PageConfigBuildTime[], config: ResolvedConfig): {
|
|
9
14
|
hasClientRouting: boolean;
|
|
10
15
|
hasServerRouting: boolean;
|
|
11
|
-
clientEntries: Record<string,
|
|
16
|
+
clientEntries: Record<string, ClientEntry>;
|
|
12
17
|
};
|
|
13
18
|
declare function assertRollupInput(config: ResolvedConfig): void;
|
|
@@ -8,12 +8,13 @@ import { assertImportIsNpmPackage } from '../../../../utils/parseNpmPackage.js';
|
|
|
8
8
|
import { removeFileExtension } from '../../../../utils/removeFileExtension.js';
|
|
9
9
|
import { requireResolveDistFile } from '../../../../utils/requireResolve.js';
|
|
10
10
|
import { unique } from '../../../../utils/unique.js';
|
|
11
|
+
import { objectMap } from '../../../../utils/objectMap.js';
|
|
11
12
|
import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
|
|
12
13
|
import { findPageFiles } from '../../shared/findPageFiles.js';
|
|
13
14
|
import { generateVirtualFileId } from '../../../../shared-server-node/virtualFileId.js';
|
|
14
15
|
import { extractAssetsAddQuery } from '../../../../shared-server-node/extractAssetsQuery.js';
|
|
15
16
|
import { prependEntriesDir } from '../../../../shared-server-node/prependEntriesDir.js';
|
|
16
|
-
import { getFilePathResolved } from '../../shared/getFilePath.js';
|
|
17
|
+
import { getFilePathResolved, getFilePathUnresolved } from '../../shared/getFilePath.js';
|
|
17
18
|
import { getConfigValueBuildTime } from '../../../../shared-server-client/page-configs/getConfigValueBuildTime.js';
|
|
18
19
|
import { isViteServerSide_viteEnvOptional } from '../../shared/isViteServerSide.js';
|
|
19
20
|
import { handleAssetsManifest_assertUsageCssCodeSplit, handleAssetsManifest_getBuildConfig, handleAssetsManifest_alignCssTarget, } from './handleAssetsManifest.js';
|
|
@@ -40,9 +41,9 @@ function pluginBuildConfig() {
|
|
|
40
41
|
},
|
|
41
42
|
config: {
|
|
42
43
|
order: 'post',
|
|
43
|
-
async handler() {
|
|
44
|
+
async handler(config) {
|
|
44
45
|
onSetupBuild();
|
|
45
|
-
const build = await handleAssetsManifest_getBuildConfig();
|
|
46
|
+
const build = await handleAssetsManifest_getBuildConfig(config);
|
|
46
47
|
return { build };
|
|
47
48
|
},
|
|
48
49
|
},
|
|
@@ -76,7 +77,7 @@ async function getEntries(config) {
|
|
|
76
77
|
hasServerRouting = true;
|
|
77
78
|
}
|
|
78
79
|
const entries = {
|
|
79
|
-
...clientEntries,
|
|
80
|
+
...objectMap(clientEntries, (clientEntry) => clientEntry.entryTarget),
|
|
80
81
|
...pageFileEntries,
|
|
81
82
|
};
|
|
82
83
|
const clientRoutingEntry = requireResolveDistFile('dist/client/runtime-client-routing/entry.js');
|
|
@@ -113,8 +114,8 @@ function analyzeClientEntries(pageConfigs, config) {
|
|
|
113
114
|
}
|
|
114
115
|
{
|
|
115
116
|
// Ensure Rollup generates a bundle per page: https://github.com/vikejs/vike/issues/349#issuecomment-1166247275
|
|
116
|
-
const { entryName, entryTarget } = getEntryFromPageConfig(pageConfig, true);
|
|
117
|
-
clientEntries[entryName] = entryTarget;
|
|
117
|
+
const { entryName, entryTarget, entryFilePath } = getEntryFromPageConfig(pageConfig, true);
|
|
118
|
+
clientEntries[entryName] = { entryTarget, entryFilePath };
|
|
118
119
|
}
|
|
119
120
|
{
|
|
120
121
|
const clientEntry = getConfigValueBuildTime(pageConfig, 'client', 'string')?.value ?? null;
|
|
@@ -125,8 +126,8 @@ function analyzeClientEntries(pageConfigs, config) {
|
|
|
125
126
|
});
|
|
126
127
|
clientEntryList = unique(clientEntryList);
|
|
127
128
|
clientEntryList.forEach((clientEntry) => {
|
|
128
|
-
const { entryName, entryTarget } = getEntryFromClientEntry(clientEntry, config);
|
|
129
|
-
clientEntries[entryName] = entryTarget;
|
|
129
|
+
const { entryName, entryTarget, entryFilePath } = getEntryFromClientEntry(clientEntry, config);
|
|
130
|
+
clientEntries[entryName] = { entryTarget, entryFilePath };
|
|
130
131
|
});
|
|
131
132
|
return { hasClientRouting, hasServerRouting, clientEntries };
|
|
132
133
|
}
|
|
@@ -157,7 +158,8 @@ function getEntryFromClientEntry(clientEntry, config, addExtractAssetsQuery) {
|
|
|
157
158
|
assertImportIsNpmPackage(clientEntry);
|
|
158
159
|
const entryTarget = clientEntry;
|
|
159
160
|
const entryName = prependEntriesDir(clientEntry);
|
|
160
|
-
|
|
161
|
+
const entryFilePath = getFilePathUnresolved({ importPathAbsolute: clientEntry });
|
|
162
|
+
return { entryName, entryTarget, entryFilePath };
|
|
161
163
|
}
|
|
162
164
|
const filePathAbsoluteUserRootDir = clientEntry;
|
|
163
165
|
assert(filePathAbsoluteUserRootDir.startsWith('/'));
|
|
@@ -173,7 +175,7 @@ function getEntryFromClientEntry(clientEntry, config, addExtractAssetsQuery) {
|
|
|
173
175
|
entryName = extractAssetsAddQuery(entryName);
|
|
174
176
|
entryName = removeFileExtension(entryName);
|
|
175
177
|
entryName = prependEntriesDir(entryName);
|
|
176
|
-
return { entryName, entryTarget };
|
|
178
|
+
return { entryName, entryTarget, entryFilePath: filePath };
|
|
177
179
|
}
|
|
178
180
|
function getEntryFromPageConfig(pageConfig, isForClientSide) {
|
|
179
181
|
let { pageId } = pageConfig;
|
|
@@ -188,7 +190,7 @@ function getEntryFromPageConfig(pageConfig, isForClientSide) {
|
|
|
188
190
|
entryName = 'root';
|
|
189
191
|
entryName = prependEntriesDir(entryName);
|
|
190
192
|
assert(!entryName.endsWith('/'));
|
|
191
|
-
return { entryName, entryTarget };
|
|
193
|
+
return { entryName, entryTarget, entryFilePath: null };
|
|
192
194
|
}
|
|
193
195
|
function addLogHook() {
|
|
194
196
|
const tty = process.stdout.isTTY && !process.env.CI; // Equals https://github.com/vitejs/vite/blob/193d55c7b9cbfec5b79ebfca276d4a721e7de14d/packages/vite/src/node/plugins/reporter.ts#L27
|
|
@@ -11,7 +11,7 @@ import crypto from 'node:crypto';
|
|
|
11
11
|
import { getAssetsDir } from '../../shared/getAssetsDir.js';
|
|
12
12
|
import { assertModuleId, getFilePathToShowToUserModule } from '../../shared/getFilePath.js';
|
|
13
13
|
import '../../assertEnvVite.js';
|
|
14
|
-
import {
|
|
14
|
+
import { isVite8OrAbove } from '../../shared/isVite8OrAbove.js';
|
|
15
15
|
function pluginDistFileNames() {
|
|
16
16
|
return [
|
|
17
17
|
{
|
|
@@ -291,11 +291,6 @@ function getCssChunkName(id, config) {
|
|
|
291
291
|
return `${name}-${hash}`;
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
|
-
function isVite8OrAbove(config) {
|
|
295
|
-
const viteVersion = config._viteVersionResolved;
|
|
296
|
-
assert(viteVersion);
|
|
297
|
-
return isVersionMatch(viteVersion, ['8.0.0']);
|
|
298
|
-
}
|
|
299
294
|
function getRollupOutputs(config) {
|
|
300
295
|
var _a, _b;
|
|
301
296
|
// @ts-expect-error is read-only
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { pluginModuleBanner };
|
|
2
2
|
import { assert } from '../../../../utils/assert.js';
|
|
3
|
-
import { isVersionMatch } from '../../../../utils/assertVersion.js';
|
|
4
3
|
import { removeVirtualFileIdPrefix } from '../../../../utils/virtualFileId.js';
|
|
5
4
|
import { getMagicString } from '../../shared/getMagicString.js';
|
|
5
|
+
import { isVite8OrAbove } from '../../shared/isVite8OrAbove.js';
|
|
6
6
|
import '../../assertEnvVite.js';
|
|
7
7
|
// Misusing legal comments so that esbuild doesn't remove them.
|
|
8
8
|
// - Legal comments: https://esbuild.github.io/api/#legal-comments
|
|
@@ -68,7 +68,5 @@ function checkIsEnabled(config) {
|
|
|
68
68
|
// - https://github.com/vitejs/vite/issues/21228#issuecomment-3627899741
|
|
69
69
|
// - TO-DO/eventually: remove this file once Vike requires Vite 8 or above
|
|
70
70
|
function hasNativeModuleRegions(config) {
|
|
71
|
-
|
|
72
|
-
assert(viteVersion);
|
|
73
|
-
return isVersionMatch(viteVersion, ['8.0.0']);
|
|
71
|
+
return isVite8OrAbove(config);
|
|
74
72
|
}
|
|
@@ -9,7 +9,7 @@ import { assertRollupInput } from './build/pluginBuildConfig.js';
|
|
|
9
9
|
import pc from '@brillout/picocolors';
|
|
10
10
|
import { assertResolveAlias } from './pluginCommon/assertResolveAlias.js';
|
|
11
11
|
import { getVikeConfigInternal, setVikeConfigContext } from '../shared/resolveVikeConfigInternal.js';
|
|
12
|
-
import { assertViteRoot, getViteRoot, normalizeViteRoot } from '../../api/
|
|
12
|
+
import { assertViteRoot, getViteRoot, normalizeViteRoot } from '../../api/resolveViteConfigUser.js';
|
|
13
13
|
import { temp_disablePrerenderAutoRun } from '../../prerender/context.js';
|
|
14
14
|
import { version as viteVersionVike } from 'vite';
|
|
15
15
|
import '../assertEnvVite.js';
|
|
@@ -79,26 +79,29 @@ function pluginCommon(vikeVitePluginOptions) {
|
|
|
79
79
|
config: {
|
|
80
80
|
order: 'post',
|
|
81
81
|
async handler(configFromUser) {
|
|
82
|
-
|
|
82
|
+
const configFromVike = { server: {}, preview: {} };
|
|
83
83
|
const vikeConfig = await getVikeConfigInternal();
|
|
84
|
+
// A value the user set through Vike (+config.js, CLI option, or VIKE_CONFIG) overrides vite.config.js:
|
|
85
|
+
// Vike's config has higher precedence than vite.config.js (see precedence list at resolveViteConfigUser.ts).
|
|
86
|
+
// Vike's own fallbacks (default port, Docker `--host`) use setDefault() so they don't override vite.config.js.
|
|
84
87
|
if (vikeConfig.config.port !== undefined) {
|
|
85
88
|
// https://vike.dev/port
|
|
86
|
-
|
|
89
|
+
setOverride('port', vikeConfig.config.port, configFromVike);
|
|
87
90
|
}
|
|
88
91
|
else {
|
|
89
92
|
// Change Vite's default port
|
|
90
93
|
setDefault('port', 3000, configFromUser, configFromVike);
|
|
91
94
|
}
|
|
92
|
-
if (vikeConfig.config.host) {
|
|
95
|
+
if (vikeConfig.config.host !== undefined) {
|
|
93
96
|
// https://vike.dev/host
|
|
94
|
-
|
|
97
|
+
setOverride('host', vikeConfig.config.host, configFromVike);
|
|
95
98
|
}
|
|
96
99
|
else if (isDocker()) {
|
|
97
100
|
// Set `--host` for Docker/Podman
|
|
98
101
|
setDefault('host', true, configFromUser, configFromVike);
|
|
99
102
|
}
|
|
100
103
|
// https://vike.dev/force
|
|
101
|
-
if (vikeConfig.config.force !== undefined
|
|
104
|
+
if (vikeConfig.config.force !== undefined) {
|
|
102
105
|
configFromVike.optimizeDeps ?? (configFromVike.optimizeDeps = {});
|
|
103
106
|
configFromVike.optimizeDeps.force = vikeConfig.config.force;
|
|
104
107
|
}
|
|
@@ -108,7 +111,12 @@ function pluginCommon(vikeVitePluginOptions) {
|
|
|
108
111
|
},
|
|
109
112
|
];
|
|
110
113
|
}
|
|
111
|
-
//
|
|
114
|
+
// Apply a Vike-provided value, overriding vite.config.js (Vike's config has higher precedence than vite.config.js)
|
|
115
|
+
function setOverride(setting, value, configFromVike) {
|
|
116
|
+
configFromVike.server[setting] = value;
|
|
117
|
+
configFromVike.preview[setting] = value;
|
|
118
|
+
}
|
|
119
|
+
// Apply a Vike fallback without overriding the user's vite.config.js
|
|
112
120
|
function setDefault(setting, value, configFromUser, configFromVike) {
|
|
113
121
|
if (configFromUser.server?.[setting] === undefined)
|
|
114
122
|
configFromVike.server[setting] = value;
|