vike 0.4.217 → 0.4.218-commit-ed9b3d4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__internal/index.js +9 -8
- package/dist/cjs/node/api/build.js +21 -12
- package/dist/cjs/node/api/context.js +5 -1
- package/dist/cjs/node/api/index.js +17 -7
- package/dist/cjs/node/api/prepareViteApiCall.js +128 -26
- package/dist/cjs/node/api/utils.js +2 -0
- package/dist/cjs/node/cli/entry.js +19 -7
- package/dist/cjs/node/plugin/index.js +6 -5
- package/dist/cjs/node/plugin/plugins/autoFullBuild.js +3 -4
- package/dist/cjs/node/plugin/plugins/baseUrls.js +20 -18
- package/dist/cjs/node/plugin/plugins/buildConfig.js +2 -2
- package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
- package/dist/cjs/node/plugin/plugins/commonConfig.js +6 -6
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +2 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +22 -111
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +189 -16
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -1
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -1
- package/dist/cjs/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
- package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +17 -7
- package/dist/cjs/node/prerender/isPrerenderEnabled.js +8 -0
- package/dist/cjs/node/prerender/runPrerender.js +22 -35
- package/dist/cjs/node/runtime/globalContext.js +76 -29
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -2
- package/dist/cjs/node/runtime/index-common.js +0 -15
- package/dist/cjs/node/runtime/onLoad.js +17 -3
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +2 -2
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/node/runtime-dev/index.js +17 -7
- package/dist/cjs/node/shared/resolveBase.js +2 -2
- package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +3 -3
- package/dist/cjs/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +2 -3
- package/dist/cjs/shared/getPageFiles.js +3 -9
- package/dist/cjs/shared/hooks/getHook.js +3 -3
- package/dist/cjs/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +113 -81
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +79 -54
- package/dist/cjs/shared/route/loadPageRoutes.js +3 -3
- package/dist/cjs/shared/utils.js +1 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +4 -3
- package/dist/cjs/utils/debug.js +11 -6
- package/dist/cjs/utils/objectReplace.js +9 -0
- package/dist/esm/__internal/index.d.ts +3 -5
- package/dist/esm/__internal/index.js +4 -5
- package/dist/esm/client/client-routing-runtime/createPageContext.js +7 -1
- package/dist/esm/client/client-routing-runtime/entry.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/entry.js +0 -1
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
- package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/server-routing-runtime/entry.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/entry.js +0 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.js +8 -2
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/api/build.js +4 -5
- package/dist/esm/node/api/context.d.ts +3 -1
- package/dist/esm/node/api/context.js +6 -2
- package/dist/esm/node/api/prepareViteApiCall.d.ts +9 -3
- package/dist/esm/node/api/prepareViteApiCall.js +111 -22
- package/dist/esm/node/api/utils.d.ts +2 -0
- package/dist/esm/node/api/utils.js +2 -0
- package/dist/esm/node/cli/entry.js +2 -0
- package/dist/esm/node/cli/parseCli.d.ts +1 -1
- package/dist/esm/node/plugin/index.d.ts +1 -1
- package/dist/esm/node/plugin/index.js +6 -5
- package/dist/esm/node/plugin/plugins/autoFullBuild.js +3 -4
- package/dist/esm/node/plugin/plugins/baseUrls.d.ts +1 -2
- package/dist/esm/node/plugin/plugins/baseUrls.js +21 -19
- package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/index.js +16 -17
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +7 -1
- package/dist/esm/node/plugin/plugins/commonConfig.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +2 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +23 -112
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +99 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +189 -16
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +2 -1
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +1 -1
- package/dist/esm/node/plugin/plugins/workaroundVite6HmrRegression.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/{vite6HmrRegressionWorkaround.js → workaroundVite6HmrRegression.js} +3 -3
- package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +1 -1
- package/dist/esm/node/prerender/isPrerenderEnabled.d.ts +3 -0
- package/dist/esm/node/prerender/isPrerenderEnabled.js +6 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +1 -2
- package/dist/esm/node/prerender/runPrerender.js +4 -27
- package/dist/esm/node/runtime/globalContext.d.ts +6 -4
- package/dist/esm/node/runtime/globalContext.js +76 -29
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
- package/dist/esm/node/runtime/index-common.d.ts +0 -1
- package/dist/esm/node/runtime/index-common.js +0 -15
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -0
- package/dist/esm/node/runtime/onLoad.js +16 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/node/shared/resolveBase.js +2 -2
- package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
- package/dist/esm/shared/getPageFiles/{setPageFiles.js → getPageFiles.js} +2 -3
- package/dist/esm/shared/getPageFiles.d.ts +2 -5
- package/dist/esm/shared/getPageFiles.js +1 -4
- package/dist/esm/shared/hooks/getHook.d.ts +3 -3
- package/dist/esm/shared/hooks/getHook.js +1 -1
- package/dist/esm/shared/page-configs/Config.d.ts +8 -2
- package/dist/esm/shared/page-configs/PageConfig.d.ts +7 -3
- package/dist/esm/shared/{getPageFiles/getExports.d.ts → page-configs/getPageConfigUserFriendly.d.ts} +23 -12
- package/dist/esm/shared/{getPageFiles/getExports.js → page-configs/getPageConfigUserFriendly.js} +112 -80
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +28 -4
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +79 -54
- package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +1 -1
- package/dist/esm/shared/types.d.ts +1 -1
- package/dist/esm/shared/utils.d.ts +1 -0
- package/dist/esm/shared/utils.js +1 -0
- package/dist/esm/types/index.d.ts +1 -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.js +4 -3
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +11 -6
- package/dist/esm/utils/objectReplace.d.ts +1 -0
- package/dist/esm/utils/objectReplace.js +6 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +3 -22
- package/__internal/loadImportBuild.js +0 -3
- package/__internal/setup.js +0 -3
- package/dist/cjs/node/plugin/plugins/commonConfig/pluginName.js +0 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -128
- package/dist/cjs/node/runtime/globalContext/loadImportBuild.js +0 -25
- package/dist/cjs/node/runtime/page-files/getPageFilesExports.js +0 -22
- package/dist/cjs/node/runtime/page-files/setup.js +0 -5
- package/dist/esm/client/client-routing-runtime/pageFiles.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/pageFiles.js +0 -4
- package/dist/esm/client/server-routing-runtime/pageFiles.d.ts +0 -1
- package/dist/esm/client/server-routing-runtime/pageFiles.js +0 -4
- package/dist/esm/node/plugin/plugins/commonConfig/pluginName.d.ts +0 -1
- package/dist/esm/node/plugin/plugins/commonConfig/pluginName.js +0 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.d.ts +0 -104
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveVikeConfigGlobal.js +0 -123
- package/dist/esm/node/plugin/plugins/vite6HmrRegressionWorkaround.d.ts +0 -3
- package/dist/esm/node/runtime/globalContext/loadImportBuild.d.ts +0 -18
- package/dist/esm/node/runtime/globalContext/loadImportBuild.js +0 -23
- package/dist/esm/node/runtime/page-files/getPageFilesExports.d.ts +0 -2
- package/dist/esm/node/runtime/page-files/getPageFilesExports.js +0 -20
- package/dist/esm/node/runtime/page-files/setup.d.ts +0 -1
- package/dist/esm/node/runtime/page-files/setup.js +0 -3
- package/dist/cjs/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
- package/dist/cjs/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
- package/dist/esm/node/plugin/plugins/{importBuild → buildEntry}/getVikeManifest.js +0 -0
- package/dist/esm/shared/getPageFiles/{setPageFiles.d.ts → getPageFiles.d.ts} +1 -1
- /package/dist/esm/shared/page-configs/{getConfigValue.d.ts → getConfigValueRuntime.d.ts} +0 -0
- /package/dist/esm/shared/page-configs/{getConfigValue.js → getConfigValueRuntime.js} +0 -0
|
@@ -5,7 +5,7 @@ export { getPageContextFromClientHooks };
|
|
|
5
5
|
export { setPageContextInitIsPassedToClient };
|
|
6
6
|
export type { PageContextFromServerHooks };
|
|
7
7
|
export type { PageContextFromClientHooks };
|
|
8
|
-
import type {
|
|
8
|
+
import type { PageConfigUserFriendly, PageFile } from '../../shared/getPageFiles.js';
|
|
9
9
|
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
10
10
|
type PageContext = {
|
|
11
11
|
urlOriginal: string;
|
|
@@ -21,9 +21,9 @@ declare function getPageContextFromHooks_serialized(): PageContextSerialized & {
|
|
|
21
21
|
routeParams: Record<string, string>;
|
|
22
22
|
_hasPageContextFromServer: true;
|
|
23
23
|
};
|
|
24
|
-
declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext &
|
|
24
|
+
declare function getPageContextFromHooks_isHydration(pageContext: PageContextSerialized & PageContext & PageConfigUserFriendly & {
|
|
25
25
|
_hasPageContextFromServer: true;
|
|
26
|
-
}): Promise<PageContextSerialized & PageContext &
|
|
26
|
+
}): Promise<PageContextSerialized & PageContext & PageConfigUserFriendly & {
|
|
27
27
|
_hasPageContextFromServer: true;
|
|
28
28
|
} & {
|
|
29
29
|
_hasPageContextFromClient: boolean;
|
|
@@ -45,5 +45,5 @@ type PageContextFromClientHooks = {
|
|
|
45
45
|
declare function getPageContextFromClientHooks(pageContext: {
|
|
46
46
|
pageId: string;
|
|
47
47
|
_hasPageContextFromServer: boolean;
|
|
48
|
-
} & PageContext &
|
|
48
|
+
} & PageContext & PageConfigUserFriendly, isErrorPage: boolean): Promise<PageContextFromClientHooks>;
|
|
49
49
|
declare function setPageContextInitIsPassedToClient(pageContext: Record<string, unknown>): void;
|
|
@@ -12,7 +12,7 @@ import { preparePageContextForUserConsumptionClientSide } from '../shared/prepar
|
|
|
12
12
|
import { removeBuiltInOverrides } from './getPageContext/removeBuiltInOverrides.js';
|
|
13
13
|
import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
|
|
14
14
|
import { getPageConfig } from '../../shared/page-configs/helpers.js';
|
|
15
|
-
import { getConfigValueRuntime } from '../../shared/page-configs/
|
|
15
|
+
import { getConfigValueRuntime } from '../../shared/page-configs/getConfigValueRuntime.js';
|
|
16
16
|
import { assertOnBeforeRenderHookReturn } from '../../shared/assertOnBeforeRenderHookReturn.js';
|
|
17
17
|
import { executeGuardHook } from '../../shared/route/executeGuardHook.js';
|
|
18
18
|
import { AbortRender, isAbortPageContext } from '../../shared/route/abort.js';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { getPrefetchSettings };
|
|
2
2
|
export { PAGE_CONTEXT_MAX_AGE_DEFAULT };
|
|
3
3
|
export type { PrefetchSettingResolved };
|
|
4
|
-
import type {
|
|
4
|
+
import type { PageConfigUserFriendly } from '../../../shared/getPageFiles.js';
|
|
5
5
|
declare const PAGE_CONTEXT_MAX_AGE_DEFAULT = 5000;
|
|
6
6
|
type PrefetchSettingResolved = {
|
|
7
7
|
staticAssets: false | 'hover' | 'viewport';
|
|
8
8
|
pageContext: false | number;
|
|
9
9
|
};
|
|
10
|
-
declare function getPrefetchSettings(pageContext:
|
|
10
|
+
declare function getPrefetchSettings(pageContext: PageConfigUserFriendly, linkTag: null | HTMLElement): PrefetchSettingResolved;
|
|
@@ -6,7 +6,7 @@ export { addLinkPrefetchHandlers };
|
|
|
6
6
|
export { addLinkPrefetchHandlers_watch };
|
|
7
7
|
export { addLinkPrefetchHandlers_unwatch };
|
|
8
8
|
import { type PageContextFromServerHooks, getPageContextFromServerHooks } from './getPageContextFromHooks.js';
|
|
9
|
-
import type {
|
|
9
|
+
import type { PageConfigUserFriendly, PageFile } from '../../shared/getPageFiles.js';
|
|
10
10
|
import { type PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
11
11
|
type ResultPageContextFromServer = Awaited<ReturnType<typeof getPageContextFromServerHooks>>;
|
|
12
12
|
type PageContextForPrefetch = {
|
|
@@ -19,7 +19,7 @@ type PageContextForPrefetch = {
|
|
|
19
19
|
};
|
|
20
20
|
declare function getPageContextPrefetched(pageContext: {
|
|
21
21
|
urlPathname: string;
|
|
22
|
-
} &
|
|
22
|
+
} & PageConfigUserFriendly): null | PageContextFromServerHooks;
|
|
23
23
|
declare function populatePageContextPrefetchCache(pageContext: PageContextForPrefetch, result: ResultPageContextFromServer): void;
|
|
24
24
|
/**
|
|
25
25
|
* Programmatically prefetch client assets.
|
|
@@ -60,8 +60,8 @@ async function prefetchPageContextFromServerHooks(pageContextLink, resultMaxAge)
|
|
|
60
60
|
const result = await getPageContextFromServerHooks(pageContextLink, false);
|
|
61
61
|
setPageContextPrefetchCache(pageContextLink, result, resultMaxAge);
|
|
62
62
|
}
|
|
63
|
-
function populatePageContextPrefetchCache(pageContext /*&
|
|
64
|
-
// TODO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use
|
|
63
|
+
function populatePageContextPrefetchCache(pageContext /*& PageConfigUserFriendly*/, result) {
|
|
64
|
+
// TODO/pageContext-prefetch: replace with using pageContext.config.prerender instead. (For being able to do that: eager configs need to be accessible without have to use PageConfigUserFriendly as it isn't available here.)
|
|
65
65
|
if (!isBrilloutDocpress())
|
|
66
66
|
return;
|
|
67
67
|
setPageContextPrefetchCache(pageContext, result, null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { assertServerRouting } from '../../utils/assertRoutingType.js';
|
|
2
2
|
assertServerRouting();
|
|
3
|
-
import './pageFiles';
|
|
4
3
|
import { getPageContext } from './getPageContext.js';
|
|
5
4
|
import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
|
|
6
5
|
import { assertHook } from '../../shared/hooks/getHook.js';
|
|
@@ -10,6 +10,6 @@ declare function getPageContext(): Promise<{
|
|
|
10
10
|
} & {
|
|
11
11
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
12
12
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
13
|
-
} & import("../../shared/getPageFiles.js").
|
|
13
|
+
} & import("../../shared/getPageFiles.js").PageConfigUserFriendly & {
|
|
14
14
|
_pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
|
|
15
15
|
}>;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
export { getPageContext };
|
|
1
2
|
import { assertUsage, assertWarning, objectAssign } from './utils.js';
|
|
2
3
|
import { getPageContextSerializedInHtml } from '../shared/getPageContextSerializedInHtml.js';
|
|
3
|
-
import { getPageFilesAll } from '../../shared/getPageFiles.js';
|
|
4
|
+
import { getPageFilesAll, setPageFiles } from '../../shared/getPageFiles/getPageFiles.js';
|
|
4
5
|
import { loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
|
|
5
6
|
import { getCurrentUrl } from '../shared/getCurrentUrl.js';
|
|
6
|
-
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
import * as pageFilesExports from 'virtual:vike:importUserCode:client:server-routing';
|
|
7
9
|
const urlFirst = getCurrentUrl({ withoutHash: true });
|
|
10
|
+
initDevEntry();
|
|
8
11
|
async function getPageContext() {
|
|
9
12
|
const pageContext = getPageContextSerializedInHtml();
|
|
10
13
|
objectAssign(pageContext, {
|
|
@@ -36,3 +39,6 @@ async function loadPageUserFiles(pageId) {
|
|
|
36
39
|
});
|
|
37
40
|
return pageContextAddendum;
|
|
38
41
|
}
|
|
42
|
+
function initDevEntry() {
|
|
43
|
+
setPageFiles(pageFilesExports);
|
|
44
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { executeOnRenderClientHook };
|
|
2
2
|
export type { PageContextBeforeRenderClient };
|
|
3
|
-
import type { PageFile,
|
|
3
|
+
import type { PageFile, PageConfigUserFriendly } from '../../shared/getPageFiles.js';
|
|
4
4
|
import { type PageContextForUserConsumptionClientSide } from './preparePageContextForUserConsumptionClientSide.js';
|
|
5
5
|
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
6
6
|
type PageContextBeforeRenderClient = {
|
|
@@ -9,5 +9,5 @@ type PageContextBeforeRenderClient = {
|
|
|
9
9
|
urlPathname?: string;
|
|
10
10
|
pageId: string;
|
|
11
11
|
_pageConfigs: PageConfigRuntime[];
|
|
12
|
-
} &
|
|
12
|
+
} & PageConfigUserFriendly & PageContextForUserConsumptionClientSide;
|
|
13
13
|
declare function executeOnRenderClientHook<PC extends PageContextBeforeRenderClient>(pageContext: PC, isClientRouting: boolean): Promise<void>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { loadUserFilesClientSide };
|
|
2
2
|
export { isErrorFetchingStaticAssets };
|
|
3
3
|
export type { PageContextUserFiles };
|
|
4
|
-
import { type PageFile, type
|
|
4
|
+
import { type PageFile, type PageConfigUserFriendly } from '../../shared/getPageFiles.js';
|
|
5
5
|
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
6
|
-
type PageContextUserFilesLoaded =
|
|
6
|
+
type PageContextUserFilesLoaded = PageConfigUserFriendly & {
|
|
7
7
|
_pageFilesLoaded: PageFile[];
|
|
8
8
|
};
|
|
9
9
|
type PageContextUserFiles = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { loadUserFilesClientSide };
|
|
2
2
|
export { isErrorFetchingStaticAssets };
|
|
3
|
-
import { getPageFilesClientSide,
|
|
3
|
+
import { getPageFilesClientSide, getPageConfigUserFriendly } from '../../shared/getPageFiles.js';
|
|
4
4
|
import { findPageConfig } from '../../shared/page-configs/findPageConfig.js';
|
|
5
5
|
import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
|
|
6
6
|
import { objectAssign } from '../server-routing-runtime/utils.js';
|
|
@@ -29,7 +29,7 @@ async function loadUserFilesClientSide(pageId, pageFilesAll, pageConfigs) {
|
|
|
29
29
|
}
|
|
30
30
|
throw err;
|
|
31
31
|
}
|
|
32
|
-
const pageContextExports =
|
|
32
|
+
const pageContextExports = getPageConfigUserFriendly(pageFilesClientSide, pageConfigLoaded);
|
|
33
33
|
const pageContextAddendum = {};
|
|
34
34
|
objectAssign(pageContextAddendum, pageContextExports);
|
|
35
35
|
objectAssign(pageContextAddendum, { _pageFilesLoaded: pageFilesClientSide });
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { preparePageContextForUserConsumptionClientSide };
|
|
2
2
|
export type { PageContextForUserConsumptionClientSide };
|
|
3
|
-
import type {
|
|
3
|
+
import type { PageConfigUserFriendly } from '../../shared/getPageFiles.js';
|
|
4
4
|
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
5
5
|
import { PageContextForPassToClientWarning } from './getPageContextProxyForUser.js';
|
|
6
|
-
type PageContextForUserConsumptionClientSide =
|
|
6
|
+
type PageContextForUserConsumptionClientSide = PageConfigUserFriendly & PageContextForPassToClientWarning & {
|
|
7
7
|
pageId: string;
|
|
8
8
|
_pageConfigs: PageConfigRuntime[];
|
|
9
9
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { build };
|
|
2
2
|
import { prepareViteApiCall } from './prepareViteApiCall.js';
|
|
3
3
|
import { build as buildVite } from 'vite';
|
|
4
|
+
import { isPrerenderEnabled } from '../prerender/isPrerenderEnabled.js';
|
|
4
5
|
/**
|
|
5
6
|
* Programmatically trigger `$ vike build`
|
|
6
7
|
*
|
|
@@ -13,11 +14,9 @@ async function build(options = {}) {
|
|
|
13
14
|
// Build server-side
|
|
14
15
|
const outputServer = await buildVite(setSSR(viteConfigEnhanced));
|
|
15
16
|
// Pre-render
|
|
16
|
-
if (vikeConfigGlobal
|
|
17
|
-
!vikeConfigGlobal.prerender.disableAutoRun &&
|
|
18
|
-
vikeConfigGlobal.disableAutoFullBuild !== 'prerender') {
|
|
17
|
+
if (isPrerenderEnabled(vikeConfigGlobal)) {
|
|
19
18
|
const { runPrerenderFromAutoRun } = await import('../prerender/runPrerender.js');
|
|
20
|
-
await runPrerenderFromAutoRun(viteConfigEnhanced
|
|
19
|
+
await runPrerenderFromAutoRun(viteConfigEnhanced);
|
|
21
20
|
}
|
|
22
21
|
return {
|
|
23
22
|
/* We don't return `viteConfig` because `viteConfigEnhanced` is `InlineConfig` not `ResolvedConfig`
|
|
@@ -31,7 +30,7 @@ function setSSR(viteConfig) {
|
|
|
31
30
|
return {
|
|
32
31
|
...viteConfig,
|
|
33
32
|
build: {
|
|
34
|
-
...viteConfig
|
|
33
|
+
...viteConfig?.build,
|
|
35
34
|
ssr: true
|
|
36
35
|
}
|
|
37
36
|
};
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { setOperation };
|
|
2
|
+
export { clearOperation };
|
|
1
3
|
export { isVikeCliOrApi };
|
|
2
|
-
export { setOperation as setOperation };
|
|
3
4
|
import type { Operation } from './types.js';
|
|
4
5
|
declare function isVikeCliOrApi(): boolean;
|
|
5
6
|
declare function setOperation(operation: Operation): void;
|
|
7
|
+
declare function clearOperation(): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
export { isVikeCliOrApi };
|
|
2
1
|
// export { getOperation }
|
|
3
|
-
export { setOperation
|
|
2
|
+
export { setOperation };
|
|
3
|
+
export { clearOperation };
|
|
4
|
+
export { isVikeCliOrApi };
|
|
4
5
|
import { assert, getGlobalObject } from './utils.js';
|
|
5
6
|
const globalObject = getGlobalObject('context.ts', {
|
|
6
7
|
apiOperation: undefined
|
|
@@ -17,3 +18,6 @@ function setOperation(operation) {
|
|
|
17
18
|
assert(!globalObject.apiOperation);
|
|
18
19
|
globalObject.apiOperation = operation;
|
|
19
20
|
}
|
|
21
|
+
function clearOperation() {
|
|
22
|
+
globalObject.apiOperation = undefined;
|
|
23
|
+
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
export { prepareViteApiCall };
|
|
2
|
-
|
|
2
|
+
export { getViteRoot };
|
|
3
|
+
export { assertViteRoot };
|
|
4
|
+
export { normalizeViteRoot };
|
|
5
|
+
import type { InlineConfig, ResolvedConfig } from 'vite';
|
|
3
6
|
import type { Operation } from './types.js';
|
|
4
7
|
declare function prepareViteApiCall(viteConfig: InlineConfig | undefined, operation: Operation): Promise<{
|
|
5
|
-
viteConfigEnhanced: InlineConfig;
|
|
6
|
-
vikeConfigGlobal: import("../plugin/plugins/importUserCode/v1-design/getVikeConfig
|
|
8
|
+
viteConfigEnhanced: InlineConfig | undefined;
|
|
9
|
+
vikeConfigGlobal: import("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js").VikeConfigGlobal;
|
|
7
10
|
}>;
|
|
11
|
+
declare function getViteRoot(operation: 'build' | 'dev' | 'preview' | 'prerender'): Promise<string>;
|
|
12
|
+
declare function normalizeViteRoot(root: string): string;
|
|
13
|
+
declare function assertViteRoot(root: string, config: ResolvedConfig): void;
|
|
@@ -1,38 +1,112 @@
|
|
|
1
1
|
export { prepareViteApiCall };
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
export { getViteRoot };
|
|
3
|
+
export { assertViteRoot };
|
|
4
|
+
export { normalizeViteRoot };
|
|
5
|
+
// TODO: enable Vike extensions to add Vite plugins
|
|
6
|
+
import { loadConfigFromFile, mergeConfig, resolveConfig } from 'vite';
|
|
7
|
+
import { clearOperation, setOperation } from './context.js';
|
|
5
8
|
import { getVikeConfig2 } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
6
|
-
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { assert, assertUsage, getGlobalObject, isObject, toPosixPath } from './utils.js';
|
|
11
|
+
import pc from '@brillout/picocolors';
|
|
12
|
+
import { clearGlobalContext } from '../runtime/globalContext.js';
|
|
13
|
+
const globalObject = getGlobalObject('prepareViteApiCall.ts', {});
|
|
14
|
+
async function prepareViteApiCall(viteConfig, operation) {
|
|
15
|
+
clear();
|
|
7
16
|
setOperation(operation);
|
|
8
17
|
return enhanceViteConfig(viteConfig, operation);
|
|
9
18
|
}
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
// For subsequent API calls, e.g. calling prerender() after build()
|
|
20
|
+
function clear() {
|
|
21
|
+
clearOperation();
|
|
22
|
+
clearGlobalContext();
|
|
23
|
+
}
|
|
24
|
+
async function enhanceViteConfig(viteConfig, operation) {
|
|
25
|
+
const viteInfo = await getInfoFromVite(viteConfig, operation);
|
|
26
|
+
await assertViteRoot2(viteInfo.root, viteInfo.viteConfigEnhanced, operation);
|
|
27
|
+
const vikeConfig = await getVikeConfig2(viteInfo.root, operation === 'dev', viteInfo.vikeVitePluginOptions);
|
|
28
|
+
const viteConfigEnhanced = addViteSettingsSetByUser(viteInfo.viteConfigEnhanced, vikeConfig);
|
|
29
|
+
return {
|
|
30
|
+
viteConfigEnhanced,
|
|
31
|
+
vikeConfigGlobal: vikeConfig.vikeConfigGlobal
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function addViteSettingsSetByUser(viteConfigEnhanced, vikeConfig) {
|
|
35
|
+
const { global } = vikeConfig.vikeConfigNew;
|
|
36
|
+
const viteConfigs = global.from.configsCumulative.vite;
|
|
37
|
+
if (!viteConfigs)
|
|
38
|
+
return viteConfigEnhanced;
|
|
39
|
+
viteConfigs.values.forEach((v) => {
|
|
40
|
+
assertUsage(isObject(v.value), `${v.definedAt} should be an object`);
|
|
41
|
+
viteConfigEnhanced = mergeConfig(v.value, viteConfigEnhanced ?? {});
|
|
42
|
+
});
|
|
43
|
+
return viteConfigEnhanced;
|
|
44
|
+
}
|
|
45
|
+
async function getViteRoot(operation) {
|
|
46
|
+
if (!globalObject.root)
|
|
47
|
+
await getInfoFromVite(undefined, operation);
|
|
48
|
+
assert(globalObject.root);
|
|
49
|
+
return globalObject.root;
|
|
50
|
+
}
|
|
51
|
+
async function getInfoFromVite(viteConfig, operation) {
|
|
52
|
+
const viteConfigFromFile = await loadViteConfigFile(viteConfig, operation);
|
|
53
|
+
const root = normalizeViteRoot(viteConfigFromFile?.root ?? viteConfig?.root ?? process.cwd());
|
|
54
|
+
globalObject.root = root;
|
|
55
|
+
let vikeVitePluginOptions;
|
|
12
56
|
let viteConfigEnhanced = viteConfig;
|
|
13
|
-
|
|
14
|
-
if (
|
|
15
|
-
|
|
57
|
+
const found = findVikeVitePlugin([...(viteConfig?.plugins ?? []), ...(viteConfigFromFile?.plugins ?? [])]);
|
|
58
|
+
if (found) {
|
|
59
|
+
vikeVitePluginOptions = found.vikeVitePluginOptions;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Add Vike to plugins if not present.
|
|
63
|
+
// 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.
|
|
16
64
|
const { plugin: vikePlugin } = await import('../plugin/index.js');
|
|
17
65
|
viteConfigEnhanced = {
|
|
18
66
|
...viteConfig,
|
|
19
|
-
plugins: [...(viteConfig
|
|
67
|
+
plugins: [...(viteConfig?.plugins ?? []), vikePlugin()]
|
|
20
68
|
};
|
|
21
|
-
|
|
69
|
+
const res = findVikeVitePlugin(viteConfigEnhanced.plugins);
|
|
70
|
+
assert(res);
|
|
71
|
+
vikeVitePluginOptions = res.vikeVitePluginOptions;
|
|
22
72
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// TODO: enable Vike extensions to add Vite plugins
|
|
26
|
-
return {
|
|
27
|
-
viteConfigEnhanced,
|
|
28
|
-
vikeConfigGlobal
|
|
29
|
-
};
|
|
73
|
+
assert(vikeVitePluginOptions);
|
|
74
|
+
return { root, vikeVitePluginOptions, viteConfigEnhanced };
|
|
30
75
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
76
|
+
function findVikeVitePlugin(plugins) {
|
|
77
|
+
let vikeVitePluginOptions;
|
|
78
|
+
let vikeVitePuginFound = false;
|
|
79
|
+
plugins.forEach((p) => {
|
|
80
|
+
if (p && '__vikeVitePluginOptions' in p) {
|
|
81
|
+
vikeVitePuginFound = true;
|
|
82
|
+
const options = p.__vikeVitePluginOptions;
|
|
83
|
+
vikeVitePluginOptions ?? (vikeVitePluginOptions = {});
|
|
84
|
+
Object.assign(vikeVitePluginOptions, options);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
if (!vikeVitePuginFound)
|
|
88
|
+
return null;
|
|
89
|
+
return { vikeVitePluginOptions };
|
|
90
|
+
}
|
|
91
|
+
// Copied from https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L961-L1005
|
|
92
|
+
async function loadViteConfigFile(viteConfig, operation) {
|
|
93
|
+
const [inlineConfig, command, defaultMode, _defaultNodeEnv, isPreview] = getResolveConfigArgs(viteConfig, operation);
|
|
94
|
+
let config = inlineConfig;
|
|
95
|
+
let mode = inlineConfig.mode || defaultMode;
|
|
96
|
+
const configEnv = {
|
|
97
|
+
mode,
|
|
98
|
+
command,
|
|
99
|
+
isSsrBuild: command === 'build' && !!config.build?.ssr,
|
|
100
|
+
isPreview
|
|
101
|
+
};
|
|
102
|
+
let { configFile } = config;
|
|
103
|
+
if (configFile !== false) {
|
|
104
|
+
const loadResult = await loadConfigFromFile(configEnv, configFile, config.root, config.logLevel, config.customLogger);
|
|
105
|
+
return loadResult?.config;
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
34
108
|
}
|
|
35
|
-
function getResolveConfigArgs(viteConfig, operation) {
|
|
109
|
+
function getResolveConfigArgs(viteConfig = {}, operation) {
|
|
36
110
|
const inlineConfig = viteConfig;
|
|
37
111
|
const command = operation === 'build' || operation === 'prerender' ? 'build' : 'serve';
|
|
38
112
|
const defaultMode = operation === 'dev' ? 'development' : 'production';
|
|
@@ -40,3 +114,18 @@ function getResolveConfigArgs(viteConfig, operation) {
|
|
|
40
114
|
const isPreview = operation === 'preview';
|
|
41
115
|
return [inlineConfig, command, defaultMode, defaultNodeEnv, isPreview];
|
|
42
116
|
}
|
|
117
|
+
function normalizeViteRoot(root) {
|
|
118
|
+
return toPosixPath(path.resolve(root));
|
|
119
|
+
}
|
|
120
|
+
const errMsg = `A Vite plugin is modifying Vite's setting ${pc.cyan('root')} which is forbidden`;
|
|
121
|
+
async function assertViteRoot2(root, viteConfigEnhanced, operation) {
|
|
122
|
+
const args = getResolveConfigArgs(viteConfigEnhanced, operation);
|
|
123
|
+
// 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.
|
|
124
|
+
const viteConfigResolved = await resolveConfig(...args);
|
|
125
|
+
assertUsage(normalizeViteRoot(viteConfigResolved.root) === normalizeViteRoot(root), errMsg);
|
|
126
|
+
}
|
|
127
|
+
function assertViteRoot(root, config) {
|
|
128
|
+
if (globalObject.root)
|
|
129
|
+
assert(normalizeViteRoot(globalObject.root) === normalizeViteRoot(root));
|
|
130
|
+
assertUsage(normalizeViteRoot(root) === normalizeViteRoot(config.root), errMsg);
|
|
131
|
+
}
|
|
@@ -3,5 +3,5 @@ export { plugin };
|
|
|
3
3
|
export { plugin as ssr };
|
|
4
4
|
export type { VikeVitePluginOptions as UserConfig };
|
|
5
5
|
export { PROJECT_VERSION as version } from './utils.js';
|
|
6
|
-
import type { VikeVitePluginOptions } from './plugins/importUserCode/v1-design/getVikeConfig
|
|
6
|
+
import type { VikeVitePluginOptions } from './plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
7
7
|
declare function plugin(vikeVitePluginOptions?: VikeVitePluginOptions): any;
|
|
@@ -17,7 +17,7 @@ import { extractAssetsPlugin } from './plugins/extractAssetsPlugin.js';
|
|
|
17
17
|
import { extractExportNamesPlugin } from './plugins/extractExportNamesPlugin.js';
|
|
18
18
|
import { suppressRollupWarning } from './plugins/suppressRollupWarning.js';
|
|
19
19
|
import { setGlobalContext } from './plugins/setGlobalContext.js';
|
|
20
|
-
import {
|
|
20
|
+
import { buildEntry } from './plugins/buildEntry/index.js';
|
|
21
21
|
import { commonConfig } from './plugins/commonConfig.js';
|
|
22
22
|
import { baseUrls } from './plugins/baseUrls.js';
|
|
23
23
|
import { envVarsPlugin } from './plugins/envVars.js';
|
|
@@ -26,12 +26,12 @@ import { fileEnv } from './plugins/fileEnv.js';
|
|
|
26
26
|
import { setResolveClientEntriesDev } from '../runtime/renderPage/getPageAssets.js';
|
|
27
27
|
import { resolveClientEntriesDev } from './resolveClientEntriesDev.js';
|
|
28
28
|
import { workaroundCssModuleHmr } from './plugins/workaroundCssModuleHmr.js';
|
|
29
|
-
import {
|
|
29
|
+
import { workaroundVite6HmrRegression } from './plugins/workaroundVite6HmrRegression.js';
|
|
30
30
|
markSetup_vikeVitePlugin();
|
|
31
31
|
assertViteVersion();
|
|
32
32
|
setResolveClientEntriesDev(resolveClientEntriesDev);
|
|
33
33
|
// Return as `any` to avoid Plugin type mismatches when there are multiple Vite versions installed
|
|
34
|
-
function plugin(vikeVitePluginOptions) {
|
|
34
|
+
function plugin(vikeVitePluginOptions = {}) {
|
|
35
35
|
const plugins = [
|
|
36
36
|
...commonConfig(vikeVitePluginOptions),
|
|
37
37
|
importUserCode(),
|
|
@@ -46,13 +46,14 @@ function plugin(vikeVitePluginOptions) {
|
|
|
46
46
|
extractExportNamesPlugin(),
|
|
47
47
|
suppressRollupWarning(),
|
|
48
48
|
...setGlobalContext(),
|
|
49
|
-
...
|
|
49
|
+
...buildEntry(),
|
|
50
50
|
baseUrls(vikeVitePluginOptions),
|
|
51
51
|
envVarsPlugin(),
|
|
52
52
|
fileEnv(),
|
|
53
53
|
workaroundCssModuleHmr(),
|
|
54
|
-
|
|
54
|
+
workaroundVite6HmrRegression()
|
|
55
55
|
];
|
|
56
|
+
Object.assign(plugins, { __vikeVitePluginOptions: vikeVitePluginOptions });
|
|
56
57
|
return plugins;
|
|
57
58
|
}
|
|
58
59
|
// Error upon wrong usage
|
|
@@ -3,6 +3,7 @@ export { autoFullBuild };
|
|
|
3
3
|
import { build } from 'vite';
|
|
4
4
|
import { assertWarning } from '../utils.js';
|
|
5
5
|
import { runPrerenderFromAutoRun, runPrerender_forceExit } from '../../prerender/runPrerender.js';
|
|
6
|
+
import { isPrerenderEnabled } from '../../prerender/isPrerenderEnabled.js';
|
|
6
7
|
import { isViteCliCall, getViteConfigFromCli } from '../shared/isViteCliCall.js';
|
|
7
8
|
import pc from '@brillout/picocolors';
|
|
8
9
|
import { logErrorHint } from '../../runtime/renderPage/logErrorHint.js';
|
|
@@ -90,10 +91,8 @@ async function triggerFullBuild(config, vikeConfigGlobal, bundle) {
|
|
|
90
91
|
logErrorHint(err);
|
|
91
92
|
process.exit(1);
|
|
92
93
|
}
|
|
93
|
-
if (vikeConfigGlobal
|
|
94
|
-
|
|
95
|
-
vikeConfigGlobal.disableAutoFullBuild !== 'prerender') {
|
|
96
|
-
await runPrerenderFromAutoRun(configInline, false);
|
|
94
|
+
if (isPrerenderEnabled(vikeConfigGlobal)) {
|
|
95
|
+
await runPrerenderFromAutoRun(configInline);
|
|
97
96
|
forceExit = true;
|
|
98
97
|
}
|
|
99
98
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
export { baseUrls };
|
|
2
2
|
import type { Plugin } from 'vite';
|
|
3
|
-
|
|
4
|
-
declare function baseUrls(vikeVitePluginOptions?: VikeVitePluginOptions): Plugin;
|
|
3
|
+
declare function baseUrls(vikeVitePluginOptions: unknown): Plugin;
|
|
@@ -1,36 +1,42 @@
|
|
|
1
1
|
export { baseUrls };
|
|
2
2
|
import { resolveBase, resolveBaseFromResolvedConfig } from '../../shared/resolveBase.js';
|
|
3
3
|
import { assert } from '../utils.js';
|
|
4
|
-
import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
|
|
4
|
+
import { getVikeConfig, getVikeConfig2 } from './importUserCode/v1-design/getVikeConfig.js';
|
|
5
|
+
import { assertViteRoot, getViteRoot, normalizeViteRoot } from '../../api/prepareViteApiCall.js';
|
|
5
6
|
function baseUrls(vikeVitePluginOptions) {
|
|
6
|
-
let
|
|
7
|
+
let basesResolved;
|
|
8
|
+
let root;
|
|
7
9
|
return {
|
|
8
10
|
name: 'vike:baseUrls',
|
|
9
11
|
enforce: 'post',
|
|
10
|
-
async config(config) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
12
|
+
async config(config, env) {
|
|
13
|
+
const isDev = config._isDev;
|
|
14
|
+
assert(typeof isDev === 'boolean');
|
|
15
|
+
const operation = env.command === 'build' ? 'build' : env.isPreview ? 'preview' : 'dev';
|
|
16
|
+
root = config.root ? normalizeViteRoot(config.root) : await getViteRoot(operation);
|
|
17
|
+
assert(root);
|
|
18
|
+
const baseViteOriginal = config.base ?? '/__UNSET__'; // '/__UNSET__' because Vite resolves `_baseViteOriginal: null` to `undefined`
|
|
19
|
+
const vikeConfig = await getVikeConfig2(root, isDev, vikeVitePluginOptions);
|
|
20
|
+
basesResolved = resolveBase(baseViteOriginal, vikeConfig.vikeConfigGlobal.baseServer, vikeConfig.vikeConfigGlobal.baseAssets);
|
|
14
21
|
// We cannot define these in configResolved() because Vite picks up the env variables before any configResolved() hook is called
|
|
15
|
-
process.env.BASE_SERVER = baseServer;
|
|
16
|
-
process.env.BASE_ASSETS = baseAssets;
|
|
22
|
+
process.env.BASE_SERVER = basesResolved.baseServer;
|
|
23
|
+
process.env.BASE_ASSETS = basesResolved.baseAssets;
|
|
17
24
|
return {
|
|
18
25
|
envPrefix: [
|
|
19
26
|
'VITE_', // Vite doesn't seem to merge in its default, see https://github.com/vikejs/vike/issues/554
|
|
20
27
|
'BASE_SERVER',
|
|
21
28
|
'BASE_ASSETS'
|
|
22
29
|
],
|
|
23
|
-
base: baseAssets, // Make Vite inject baseAssets to imports e.g. `import logoUrl from './logo.svg.js'`
|
|
24
|
-
_baseViteOriginal:
|
|
30
|
+
base: basesResolved.baseAssets, // Make Vite inject baseAssets to imports e.g. `import logoUrl from './logo.svg.js'`
|
|
31
|
+
_baseViteOriginal: baseViteOriginal
|
|
25
32
|
};
|
|
26
33
|
},
|
|
27
34
|
async configResolved(config) {
|
|
35
|
+
assertViteRoot(root, config);
|
|
28
36
|
const vikeConfig = await getVikeConfig(config);
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
assert(basesResolved.baseServer === bases.baseServer);
|
|
33
|
-
assert(basesResolved.baseAssets === bases.baseAssets);
|
|
37
|
+
const basesResolved2 = resolveBaseFromResolvedConfig(vikeConfig.vikeConfigGlobal.baseServer, vikeConfig.vikeConfigGlobal.baseAssets, config);
|
|
38
|
+
assert(basesResolved2.baseServer === basesResolved.baseServer);
|
|
39
|
+
assert(basesResolved2.baseAssets === basesResolved.baseAssets);
|
|
34
40
|
/* In dev, Vite seems buggy around setting vite.config.js#base to an absolute URL (e.g. http://localhost:8080/cdn/)
|
|
35
41
|
* - In dev, Vite removes the URL origin. (I.e. it resolves the user config `vite.config.js#base: 'http://localhost:8080/cdn/'` to resolved config `config.base === '/cdn/'`.)
|
|
36
42
|
* - Instead of having an internal Vike assertion fail, we let the user discover Vite's buggy behavior.
|
|
@@ -39,7 +45,3 @@ function baseUrls(vikeVitePluginOptions) {
|
|
|
39
45
|
}
|
|
40
46
|
};
|
|
41
47
|
}
|
|
42
|
-
function resolveBaseFromUserConfig(config, vikeVitePluginOptions) {
|
|
43
|
-
const baseViteOriginal = config.base ?? null;
|
|
44
|
-
return resolveBase(baseViteOriginal, vikeVitePluginOptions?.baseServer ?? null, vikeVitePluginOptions?.baseAssets ?? null);
|
|
45
|
-
}
|
|
@@ -11,7 +11,7 @@ import { createRequire } from 'module';
|
|
|
11
11
|
import fs from 'fs/promises';
|
|
12
12
|
import path from 'path';
|
|
13
13
|
import { fixServerAssets, fixServerAssets_assertCssCodeSplit, fixServerAssets_assertCssTarget, fixServerAssets_assertCssTarget_populate, fixServerAssets_isEnabled } from './buildConfig/fixServerAssets.js';
|
|
14
|
-
import { set_ASSETS_MAP } from './
|
|
14
|
+
import { set_ASSETS_MAP } from './buildEntry/index.js';
|
|
15
15
|
import { prependEntriesDir } from '../../shared/prependEntriesDir.js';
|
|
16
16
|
import { getFilePathResolved } from '../shared/getFilePath.js';
|
|
17
17
|
import { getConfigValueBuildTime } from '../../../shared/page-configs/getConfigValueBuildTime.js';
|
|
@@ -117,7 +117,7 @@ async function getEntries(config) {
|
|
|
117
117
|
if (viteIsSSR(config)) {
|
|
118
118
|
const pageEntries = getPageEntries(pageConfigs);
|
|
119
119
|
const entries = {
|
|
120
|
-
//
|
|
120
|
+
// buildEntry: resolve('dist/esm/node/buildEntry.js'), // TODO/next-major-release: remove
|
|
121
121
|
...pageFileEntries,
|
|
122
122
|
// Ensure Rollup generates a bundle per page: https://github.com/vikejs/vike/issues/349#issuecomment-1166247275
|
|
123
123
|
...pageEntries
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { getVikeManifest };
|
|
2
2
|
import { type PluginManifest } from '../../../shared/assertPluginManifest.js';
|
|
3
|
-
import type { VikeConfigGlobal } from '../importUserCode/v1-design/getVikeConfig
|
|
3
|
+
import type { VikeConfigGlobal } from '../importUserCode/v1-design/getVikeConfig.js';
|
|
4
4
|
import type { ResolvedConfig } from 'vite';
|
|
5
5
|
declare function getVikeManifest(vikeConfigGlobal: VikeConfigGlobal, viteConfig: ResolvedConfig): PluginManifest;
|