vike 0.4.211 → 0.4.212
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +51 -19
- package/dist/cjs/node/plugin/plugins/buildConfig.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +7 -7
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +4 -1
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +51 -19
- package/dist/esm/node/plugin/plugins/buildConfig.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +7 -7
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +1 -1
|
@@ -34,9 +34,9 @@ async function fixServerAssets(config) {
|
|
|
34
34
|
const outDirs = (0, utils_js_1.getOutDirs)(config);
|
|
35
35
|
const clientManifest = await loadManifest(outDirs.outDirClient);
|
|
36
36
|
const serverManifest = await loadManifest(outDirs.outDirServer);
|
|
37
|
-
const { clientManifestMod, filesToCopy } = addServerAssets(clientManifest, serverManifest);
|
|
38
|
-
await copyAssets(filesToCopy, config);
|
|
39
|
-
return clientManifestMod;
|
|
37
|
+
const { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove } = addServerAssets(clientManifest, serverManifest);
|
|
38
|
+
await copyAssets(filesToCopy, filesToRemove, config);
|
|
39
|
+
return { clientManifestMod, serverManifestMod };
|
|
40
40
|
}
|
|
41
41
|
async function loadManifest(outDir) {
|
|
42
42
|
const manifestFilePath = path_1.default.posix.join(outDir, buildConfig_js_1.manifestTempFile);
|
|
@@ -46,11 +46,11 @@ async function loadManifest(outDir) {
|
|
|
46
46
|
(0, utils_js_1.assert)(manifest);
|
|
47
47
|
return manifest;
|
|
48
48
|
}
|
|
49
|
-
async function copyAssets(filesToCopy, config) {
|
|
49
|
+
async function copyAssets(filesToCopy, filesToRemove, config) {
|
|
50
50
|
const { outDirClient, outDirServer } = (0, utils_js_1.getOutDirs)(config);
|
|
51
51
|
const assetsDir = (0, getAssetsDir_js_1.getAssetsDir)(config);
|
|
52
52
|
const assetsDirServer = path_1.default.posix.join(outDirServer, assetsDir);
|
|
53
|
-
if (!filesToCopy.length)
|
|
53
|
+
if (!filesToCopy.length && !filesToRemove.length && !(0, fs_2.existsSync)(assetsDirServer))
|
|
54
54
|
return;
|
|
55
55
|
(0, utils_js_1.assert)((0, fs_2.existsSync)(assetsDirServer));
|
|
56
56
|
const concurrencyLimit = (0, utils_js_1.pLimit)(10);
|
|
@@ -60,6 +60,10 @@ async function copyAssets(filesToCopy, config) {
|
|
|
60
60
|
await promises_1.default.mkdir(path_1.default.posix.dirname(target), { recursive: true });
|
|
61
61
|
await promises_1.default.rename(source, target);
|
|
62
62
|
})));
|
|
63
|
+
filesToRemove.forEach((file) => {
|
|
64
|
+
const filePath = path_1.default.posix.join(outDirServer, file);
|
|
65
|
+
fs_1.default.unlinkSync(filePath);
|
|
66
|
+
});
|
|
63
67
|
/* We cannot do that because, with some edge case Rollup settings (outputing JavaScript chunks and static assets to the same directoy), this removes JavaScript chunks, see https://github.com/vikejs/vike/issues/1154#issuecomment-1975762404
|
|
64
68
|
await fs.rm(assetsDirServer, { recursive: true })
|
|
65
69
|
*/
|
|
@@ -67,7 +71,7 @@ async function copyAssets(filesToCopy, config) {
|
|
|
67
71
|
}
|
|
68
72
|
// Add serverManifest resources to clientManifest
|
|
69
73
|
function addServerAssets(clientManifest, serverManifest) {
|
|
70
|
-
var _a, _b;
|
|
74
|
+
var _a, _b, _c, _d;
|
|
71
75
|
const entriesClient = new Map();
|
|
72
76
|
const entriesServer = new Map();
|
|
73
77
|
for (const [key, entry] of Object.entries(clientManifest)) {
|
|
@@ -84,36 +88,64 @@ function addServerAssets(clientManifest, serverManifest) {
|
|
|
84
88
|
continue;
|
|
85
89
|
const resources = collectResources(entry, serverManifest);
|
|
86
90
|
(0, utils_js_1.assert)(!entriesServer.has(pageId));
|
|
87
|
-
entriesServer.set(pageId, resources);
|
|
91
|
+
entriesServer.set(pageId, { key, ...resources });
|
|
88
92
|
}
|
|
89
93
|
let filesToCopy = [];
|
|
94
|
+
let filesToRemove = [];
|
|
90
95
|
for (const [pageId, entryClient] of entriesClient.entries()) {
|
|
96
|
+
const entryServer = entriesServer.get(pageId);
|
|
97
|
+
if (!entryServer)
|
|
98
|
+
continue;
|
|
91
99
|
const cssToAdd = [];
|
|
100
|
+
const cssToRemove = [];
|
|
92
101
|
const assetsToAdd = [];
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
.
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
102
|
+
const assetsToRemove = [];
|
|
103
|
+
entryServer.css.forEach((cssServer) => {
|
|
104
|
+
if (!entryClient.css.some((cssClient) => cssServer.hash === cssClient.hash)) {
|
|
105
|
+
cssToAdd.push(cssServer.src);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
cssToRemove.push(cssServer.src);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
entryServer.assets.forEach((assetServer) => {
|
|
112
|
+
if (!entryClient.assets.some((assetClient) => assetServer.hash === assetClient.hash)) {
|
|
113
|
+
assetsToAdd.push(assetServer.src);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
assetsToRemove.push(assetServer.src);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
103
119
|
if (cssToAdd.length) {
|
|
120
|
+
const { key } = entryClient;
|
|
104
121
|
filesToCopy.push(...cssToAdd);
|
|
105
122
|
(_a = clientManifest[key]).css ?? (_a.css = []);
|
|
106
123
|
clientManifest[key].css?.push(...cssToAdd);
|
|
107
124
|
}
|
|
125
|
+
if (cssToRemove.length) {
|
|
126
|
+
const { key } = entryServer;
|
|
127
|
+
filesToRemove.push(...cssToRemove);
|
|
128
|
+
(_b = serverManifest[key]).css ?? (_b.css = []);
|
|
129
|
+
serverManifest[key].css = serverManifest[key].css.filter((entry) => !cssToRemove.includes(entry));
|
|
130
|
+
}
|
|
108
131
|
if (assetsToAdd.length) {
|
|
132
|
+
const { key } = entryClient;
|
|
109
133
|
filesToCopy.push(...assetsToAdd);
|
|
110
|
-
(
|
|
134
|
+
(_c = clientManifest[key]).assets ?? (_c.assets = []);
|
|
111
135
|
clientManifest[key].assets?.push(...assetsToAdd);
|
|
112
136
|
}
|
|
137
|
+
if (assetsToRemove.length) {
|
|
138
|
+
const { key } = entryServer;
|
|
139
|
+
filesToRemove.push(...assetsToRemove);
|
|
140
|
+
(_d = serverManifest[key]).assets ?? (_d.assets = []);
|
|
141
|
+
serverManifest[key].assets = serverManifest[key].assets.filter((entry) => !assetsToRemove.includes(entry));
|
|
142
|
+
}
|
|
113
143
|
}
|
|
114
144
|
const clientManifestMod = clientManifest;
|
|
145
|
+
const serverManifestMod = serverManifest;
|
|
115
146
|
filesToCopy = (0, utils_js_1.unique)(filesToCopy);
|
|
116
|
-
|
|
147
|
+
filesToRemove = (0, utils_js_1.unique)(filesToRemove).filter((file) => !filesToCopy.includes(file));
|
|
148
|
+
return { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove };
|
|
117
149
|
}
|
|
118
150
|
function getPageId(key) {
|
|
119
151
|
// Normalize from:
|
|
@@ -100,7 +100,7 @@ function buildConfig() {
|
|
|
100
100
|
await promises_1.default.copyFile(clientManifestFilePath, assetsJsonFilePath);
|
|
101
101
|
}
|
|
102
102
|
else {
|
|
103
|
-
const clientManifestMod = await (0, fixServerAssets_js_1.fixServerAssets)(config);
|
|
103
|
+
const { clientManifestMod } = await (0, fixServerAssets_js_1.fixServerAssets)(config);
|
|
104
104
|
await promises_1.default.writeFile(assetsJsonFilePath, JSON.stringify(clientManifestMod, null, 2), 'utf-8');
|
|
105
105
|
}
|
|
106
106
|
await promises_1.default.rm(clientManifestFilePath);
|
|
@@ -60,7 +60,7 @@ function determineInjection({ fileType, isForClientSide, isClientRouting, isPrer
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
async function generateGlobImports(globRoots, isBuild, isForClientSide, isClientRouting, configVike, isPrerendering, config, isDev, id) {
|
|
63
|
-
let fileContent = `//
|
|
63
|
+
let fileContent = `// Generated by https://github.com/vikejs/vike/blob/main/vike/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.ts
|
|
64
64
|
|
|
65
65
|
export const pageFilesLazy = {};
|
|
66
66
|
export const pageFilesEager = {};
|
|
@@ -61,13 +61,13 @@ function collectCss(mod, styleUrls, visitedModules, importer) {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
function isStyle(mod) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
return (
|
|
65
|
+
// CSS-in-JS libraries such as [wyw-in-js](https://github.com/vikejs/vike/issues/2039)
|
|
66
|
+
mod.type === 'css' ||
|
|
67
|
+
// .css, .less, ...
|
|
68
|
+
utils_js_1.styleFileRE.test(mod.url) ||
|
|
69
|
+
// CSS of .vue files
|
|
70
|
+
(mod.id && /\?vue&type=style/.test(mod.id)));
|
|
71
71
|
}
|
|
72
72
|
/*
|
|
73
73
|
function logModule(mod: ModuleNode) {
|
|
@@ -13,7 +13,10 @@ import { ResolvedConfig } from 'vite';
|
|
|
13
13
|
*/
|
|
14
14
|
declare function fixServerAssets_isEnabled(): boolean;
|
|
15
15
|
/** https://github.com/vikejs/vike/issues/1339 */
|
|
16
|
-
declare function fixServerAssets(config: ResolvedConfig): Promise<
|
|
16
|
+
declare function fixServerAssets(config: ResolvedConfig): Promise<{
|
|
17
|
+
clientManifestMod: ViteManifest;
|
|
18
|
+
serverManifestMod: ViteManifest;
|
|
19
|
+
}>;
|
|
17
20
|
declare function fixServerAssets_assertCssCodeSplit(config: ResolvedConfig): void;
|
|
18
21
|
declare function fixServerAssets_assertCssTarget_populate(config: ResolvedConfig): void;
|
|
19
22
|
declare function fixServerAssets_assertCssTarget(config: ResolvedConfig): Promise<void>;
|
|
@@ -29,9 +29,9 @@ async function fixServerAssets(config) {
|
|
|
29
29
|
const outDirs = getOutDirs(config);
|
|
30
30
|
const clientManifest = await loadManifest(outDirs.outDirClient);
|
|
31
31
|
const serverManifest = await loadManifest(outDirs.outDirServer);
|
|
32
|
-
const { clientManifestMod, filesToCopy } = addServerAssets(clientManifest, serverManifest);
|
|
33
|
-
await copyAssets(filesToCopy, config);
|
|
34
|
-
return clientManifestMod;
|
|
32
|
+
const { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove } = addServerAssets(clientManifest, serverManifest);
|
|
33
|
+
await copyAssets(filesToCopy, filesToRemove, config);
|
|
34
|
+
return { clientManifestMod, serverManifestMod };
|
|
35
35
|
}
|
|
36
36
|
async function loadManifest(outDir) {
|
|
37
37
|
const manifestFilePath = path.posix.join(outDir, manifestTempFile);
|
|
@@ -41,11 +41,11 @@ async function loadManifest(outDir) {
|
|
|
41
41
|
assert(manifest);
|
|
42
42
|
return manifest;
|
|
43
43
|
}
|
|
44
|
-
async function copyAssets(filesToCopy, config) {
|
|
44
|
+
async function copyAssets(filesToCopy, filesToRemove, config) {
|
|
45
45
|
const { outDirClient, outDirServer } = getOutDirs(config);
|
|
46
46
|
const assetsDir = getAssetsDir(config);
|
|
47
47
|
const assetsDirServer = path.posix.join(outDirServer, assetsDir);
|
|
48
|
-
if (!filesToCopy.length)
|
|
48
|
+
if (!filesToCopy.length && !filesToRemove.length && !existsSync(assetsDirServer))
|
|
49
49
|
return;
|
|
50
50
|
assert(existsSync(assetsDirServer));
|
|
51
51
|
const concurrencyLimit = pLimit(10);
|
|
@@ -55,6 +55,10 @@ async function copyAssets(filesToCopy, config) {
|
|
|
55
55
|
await fs.mkdir(path.posix.dirname(target), { recursive: true });
|
|
56
56
|
await fs.rename(source, target);
|
|
57
57
|
})));
|
|
58
|
+
filesToRemove.forEach((file) => {
|
|
59
|
+
const filePath = path.posix.join(outDirServer, file);
|
|
60
|
+
fs_sync.unlinkSync(filePath);
|
|
61
|
+
});
|
|
58
62
|
/* We cannot do that because, with some edge case Rollup settings (outputing JavaScript chunks and static assets to the same directoy), this removes JavaScript chunks, see https://github.com/vikejs/vike/issues/1154#issuecomment-1975762404
|
|
59
63
|
await fs.rm(assetsDirServer, { recursive: true })
|
|
60
64
|
*/
|
|
@@ -62,7 +66,7 @@ async function copyAssets(filesToCopy, config) {
|
|
|
62
66
|
}
|
|
63
67
|
// Add serverManifest resources to clientManifest
|
|
64
68
|
function addServerAssets(clientManifest, serverManifest) {
|
|
65
|
-
var _a, _b;
|
|
69
|
+
var _a, _b, _c, _d;
|
|
66
70
|
const entriesClient = new Map();
|
|
67
71
|
const entriesServer = new Map();
|
|
68
72
|
for (const [key, entry] of Object.entries(clientManifest)) {
|
|
@@ -79,36 +83,64 @@ function addServerAssets(clientManifest, serverManifest) {
|
|
|
79
83
|
continue;
|
|
80
84
|
const resources = collectResources(entry, serverManifest);
|
|
81
85
|
assert(!entriesServer.has(pageId));
|
|
82
|
-
entriesServer.set(pageId, resources);
|
|
86
|
+
entriesServer.set(pageId, { key, ...resources });
|
|
83
87
|
}
|
|
84
88
|
let filesToCopy = [];
|
|
89
|
+
let filesToRemove = [];
|
|
85
90
|
for (const [pageId, entryClient] of entriesClient.entries()) {
|
|
91
|
+
const entryServer = entriesServer.get(pageId);
|
|
92
|
+
if (!entryServer)
|
|
93
|
+
continue;
|
|
86
94
|
const cssToAdd = [];
|
|
95
|
+
const cssToRemove = [];
|
|
87
96
|
const assetsToAdd = [];
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
.
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
.
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
97
|
+
const assetsToRemove = [];
|
|
98
|
+
entryServer.css.forEach((cssServer) => {
|
|
99
|
+
if (!entryClient.css.some((cssClient) => cssServer.hash === cssClient.hash)) {
|
|
100
|
+
cssToAdd.push(cssServer.src);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
cssToRemove.push(cssServer.src);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
entryServer.assets.forEach((assetServer) => {
|
|
107
|
+
if (!entryClient.assets.some((assetClient) => assetServer.hash === assetClient.hash)) {
|
|
108
|
+
assetsToAdd.push(assetServer.src);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
assetsToRemove.push(assetServer.src);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
98
114
|
if (cssToAdd.length) {
|
|
115
|
+
const { key } = entryClient;
|
|
99
116
|
filesToCopy.push(...cssToAdd);
|
|
100
117
|
(_a = clientManifest[key]).css ?? (_a.css = []);
|
|
101
118
|
clientManifest[key].css?.push(...cssToAdd);
|
|
102
119
|
}
|
|
120
|
+
if (cssToRemove.length) {
|
|
121
|
+
const { key } = entryServer;
|
|
122
|
+
filesToRemove.push(...cssToRemove);
|
|
123
|
+
(_b = serverManifest[key]).css ?? (_b.css = []);
|
|
124
|
+
serverManifest[key].css = serverManifest[key].css.filter((entry) => !cssToRemove.includes(entry));
|
|
125
|
+
}
|
|
103
126
|
if (assetsToAdd.length) {
|
|
127
|
+
const { key } = entryClient;
|
|
104
128
|
filesToCopy.push(...assetsToAdd);
|
|
105
|
-
(
|
|
129
|
+
(_c = clientManifest[key]).assets ?? (_c.assets = []);
|
|
106
130
|
clientManifest[key].assets?.push(...assetsToAdd);
|
|
107
131
|
}
|
|
132
|
+
if (assetsToRemove.length) {
|
|
133
|
+
const { key } = entryServer;
|
|
134
|
+
filesToRemove.push(...assetsToRemove);
|
|
135
|
+
(_d = serverManifest[key]).assets ?? (_d.assets = []);
|
|
136
|
+
serverManifest[key].assets = serverManifest[key].assets.filter((entry) => !assetsToRemove.includes(entry));
|
|
137
|
+
}
|
|
108
138
|
}
|
|
109
139
|
const clientManifestMod = clientManifest;
|
|
140
|
+
const serverManifestMod = serverManifest;
|
|
110
141
|
filesToCopy = unique(filesToCopy);
|
|
111
|
-
|
|
142
|
+
filesToRemove = unique(filesToRemove).filter((file) => !filesToCopy.includes(file));
|
|
143
|
+
return { clientManifestMod, serverManifestMod, filesToCopy, filesToRemove };
|
|
112
144
|
}
|
|
113
145
|
function getPageId(key) {
|
|
114
146
|
// Normalize from:
|
|
@@ -94,7 +94,7 @@ function buildConfig() {
|
|
|
94
94
|
await fs.copyFile(clientManifestFilePath, assetsJsonFilePath);
|
|
95
95
|
}
|
|
96
96
|
else {
|
|
97
|
-
const clientManifestMod = await fixServerAssets(config);
|
|
97
|
+
const { clientManifestMod } = await fixServerAssets(config);
|
|
98
98
|
await fs.writeFile(assetsJsonFilePath, JSON.stringify(clientManifestMod, null, 2), 'utf-8');
|
|
99
99
|
}
|
|
100
100
|
await fs.rm(clientManifestFilePath);
|
|
@@ -55,7 +55,7 @@ function determineInjection({ fileType, isForClientSide, isClientRouting, isPrer
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
async function generateGlobImports(globRoots, isBuild, isForClientSide, isClientRouting, configVike, isPrerendering, config, isDev, id) {
|
|
58
|
-
let fileContent = `//
|
|
58
|
+
let fileContent = `// Generated by https://github.com/vikejs/vike/blob/main/vike/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.ts
|
|
59
59
|
|
|
60
60
|
export const pageFilesLazy = {};
|
|
61
61
|
export const pageFilesEager = {};
|
|
@@ -59,13 +59,13 @@ function collectCss(mod, styleUrls, visitedModules, importer) {
|
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
61
|
function isStyle(mod) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
//
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
return (
|
|
63
|
+
// CSS-in-JS libraries such as [wyw-in-js](https://github.com/vikejs/vike/issues/2039)
|
|
64
|
+
mod.type === 'css' ||
|
|
65
|
+
// .css, .less, ...
|
|
66
|
+
styleFileRE.test(mod.url) ||
|
|
67
|
+
// CSS of .vue files
|
|
68
|
+
(mod.id && /\?vue&type=style/.test(mod.id)));
|
|
69
69
|
}
|
|
70
70
|
/*
|
|
71
71
|
function logModule(mod: ModuleNode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.212";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.
|
|
2
|
+
export const PROJECT_VERSION = '0.4.212';
|