vite-ssg-optimized 0.24.2-optimized.5 → 0.24.2-optimized.50
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/README.md +32 -1
- package/dist/client/single-page.cjs +1 -1
- package/dist/client/single-page.d.cts +2 -2
- package/dist/client/single-page.d.mts +2 -2
- package/dist/client/single-page.d.ts +2 -2
- package/dist/client/single-page.mjs +2 -2
- package/dist/index.cjs +20 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +22 -5
- package/dist/node/cli.cjs +1 -1
- package/dist/node/cli.mjs +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.d.cts +8 -3
- package/dist/node.d.mts +8 -3
- package/dist/node.d.ts +8 -3
- package/dist/node.mjs +1 -1
- package/dist/shared/build.worker.cjs +99 -18
- package/dist/shared/build.worker.d.cts +4 -14
- package/dist/shared/build.worker.d.mts +4 -14
- package/dist/shared/build.worker.d.ts +4 -14
- package/dist/shared/build.worker.mjs +100 -19
- package/dist/shared/{vite-ssg-optimized.cf5cb4ee.d.cts → vite-ssg-optimized.341e382e.d.cts} +6 -1
- package/dist/shared/{vite-ssg-optimized.cf5cb4ee.d.mts → vite-ssg-optimized.341e382e.d.mts} +6 -1
- package/dist/shared/{vite-ssg-optimized.cf5cb4ee.d.ts → vite-ssg-optimized.341e382e.d.ts} +6 -1
- package/dist/shared/{vite-ssg-optimized.62fed880.mjs → vite-ssg-optimized.65f46348.mjs} +198 -87
- package/dist/shared/{vite-ssg-optimized.46e3caf6.cjs → vite-ssg-optimized.e58a8d97.cjs} +200 -87
- package/package.json +1 -1
- package/dist/shared/vite-ssg-optimized.12fd9d22.d.cts +0 -9
- package/dist/shared/vite-ssg-optimized.892682c8.d.mts +0 -9
- package/dist/shared/vite-ssg-optimized.950926bc.d.ts +0 -9
|
@@ -839,35 +839,6 @@ class PQueue extends EventEmitter {
|
|
|
839
839
|
}
|
|
840
840
|
}
|
|
841
841
|
|
|
842
|
-
async function getBeastiesOrCritters(outDir, options = {}) {
|
|
843
|
-
try {
|
|
844
|
-
const BeastiesClass = (await import('beasties')).default;
|
|
845
|
-
return new BeastiesClass({
|
|
846
|
-
path: outDir,
|
|
847
|
-
logLevel: "warn",
|
|
848
|
-
external: true,
|
|
849
|
-
inlineFonts: true,
|
|
850
|
-
preloadFonts: true,
|
|
851
|
-
...options
|
|
852
|
-
});
|
|
853
|
-
} catch {
|
|
854
|
-
}
|
|
855
|
-
try {
|
|
856
|
-
const CrittersClass = (await import('critters')).default;
|
|
857
|
-
console.warn("`critters` is deprecated. Please use `beasties` instead.");
|
|
858
|
-
return new CrittersClass({
|
|
859
|
-
path: outDir,
|
|
860
|
-
logLevel: "warn",
|
|
861
|
-
external: true,
|
|
862
|
-
inlineFonts: true,
|
|
863
|
-
preloadFonts: true,
|
|
864
|
-
...options
|
|
865
|
-
});
|
|
866
|
-
} catch {
|
|
867
|
-
return void 0;
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
|
|
871
842
|
function isMatchOption(node, opts) {
|
|
872
843
|
if (opts.match.tag && !(node.name === opts.match.tag)) {
|
|
873
844
|
return false;
|
|
@@ -1053,15 +1024,16 @@ class BuildWorkerProxy {
|
|
|
1053
1024
|
constructor(path, options) {
|
|
1054
1025
|
__publicField(this, "worker");
|
|
1055
1026
|
__publicField(this, "pending", /* @__PURE__ */ new Map());
|
|
1027
|
+
__publicField(this, "_id");
|
|
1056
1028
|
this.worker = new node_worker_threads.Worker(path, options);
|
|
1029
|
+
this._id = options.workerData.workerId;
|
|
1057
1030
|
this.worker.on("message", (message) => {
|
|
1058
1031
|
const { type, level = "info", args = [] } = message;
|
|
1059
1032
|
if (type !== "log")
|
|
1060
1033
|
return;
|
|
1061
1034
|
const fn = console[level]?.bind(console);
|
|
1062
|
-
let msg = args.map((arg) => typeof arg === "object" && !!arg ? "[object]" : arg).join(" ");
|
|
1063
1035
|
const workerId = options.workerData.workerId;
|
|
1064
|
-
fn?.(`[woker #${workerId}]
|
|
1036
|
+
fn?.(`[woker #${workerId}] `, ...args, kolorist.reset(""));
|
|
1065
1037
|
});
|
|
1066
1038
|
this.worker.on("message", (message) => {
|
|
1067
1039
|
const { id, type, result = void 0, error = void 0 } = message;
|
|
@@ -1076,12 +1048,18 @@ class BuildWorkerProxy {
|
|
|
1076
1048
|
}
|
|
1077
1049
|
});
|
|
1078
1050
|
}
|
|
1051
|
+
get id() {
|
|
1052
|
+
return this._id;
|
|
1053
|
+
}
|
|
1079
1054
|
on(type, listener) {
|
|
1080
1055
|
this.worker.on(type, listener);
|
|
1081
1056
|
}
|
|
1082
1057
|
off(type, listener) {
|
|
1083
1058
|
this.worker.off(type, listener);
|
|
1084
1059
|
}
|
|
1060
|
+
once(type, listener) {
|
|
1061
|
+
this.worker.once(type, listener);
|
|
1062
|
+
}
|
|
1085
1063
|
async send(type, args) {
|
|
1086
1064
|
const id = crypto.randomUUID();
|
|
1087
1065
|
const promise = new Promise((resolve, reject) => {
|
|
@@ -1094,7 +1072,9 @@ class BuildWorkerProxy {
|
|
|
1094
1072
|
return promise;
|
|
1095
1073
|
}
|
|
1096
1074
|
terminate() {
|
|
1097
|
-
this.worker.terminate()
|
|
1075
|
+
return this.worker.terminate().finally(() => {
|
|
1076
|
+
this.pending.clear();
|
|
1077
|
+
});
|
|
1098
1078
|
}
|
|
1099
1079
|
}
|
|
1100
1080
|
|
|
@@ -1122,10 +1102,14 @@ async function buildClient(config, viteConfig) {
|
|
|
1122
1102
|
mode: config.mode
|
|
1123
1103
|
}));
|
|
1124
1104
|
}
|
|
1125
|
-
async function buildServer(config, viteConfig, { ssrEntry, ssgOut, format }) {
|
|
1105
|
+
async function buildServer(config, viteConfig, { ssrEntry, ssgOut, format, mock }) {
|
|
1126
1106
|
buildLog("Build for server...");
|
|
1127
1107
|
process__default.env.VITE_SSG = "true";
|
|
1128
1108
|
const { base } = config;
|
|
1109
|
+
if (mock) {
|
|
1110
|
+
const { jsdomGlobal } = await import('../chunks/jsdomGlobal.cjs');
|
|
1111
|
+
jsdomGlobal();
|
|
1112
|
+
}
|
|
1129
1113
|
await vite.build(vite.mergeConfig(viteConfig, {
|
|
1130
1114
|
base,
|
|
1131
1115
|
build: {
|
|
@@ -1146,6 +1130,19 @@ async function buildServer(config, viteConfig, { ssrEntry, ssgOut, format }) {
|
|
|
1146
1130
|
mode: config.mode
|
|
1147
1131
|
}));
|
|
1148
1132
|
}
|
|
1133
|
+
function createProxy(options) {
|
|
1134
|
+
const workerExt = options.format === "esm" ? ".mjs" : ".cjs";
|
|
1135
|
+
const workerProxy = new BuildWorkerProxy(new URL(`./build.worker${workerExt}`, (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.e58a8d97.cjs', document.baseURI).href))), {
|
|
1136
|
+
env: process__default.env,
|
|
1137
|
+
workerData: options
|
|
1138
|
+
});
|
|
1139
|
+
process__default.once("SIGINT", workerProxy.terminate.bind(workerProxy));
|
|
1140
|
+
process__default.once("SIGTERM", workerProxy.terminate.bind(workerProxy));
|
|
1141
|
+
process__default.once("SIGBREAK", workerProxy.terminate.bind(workerProxy));
|
|
1142
|
+
process__default.once("beforeExit", workerProxy.terminate.bind(workerProxy));
|
|
1143
|
+
process__default.once("exit", workerProxy.terminate.bind(workerProxy));
|
|
1144
|
+
return workerProxy;
|
|
1145
|
+
}
|
|
1149
1146
|
async function build(ssgOptions = {}, viteConfig = {}) {
|
|
1150
1147
|
const nodeEnv = process__default.env.NODE_ENV || "production";
|
|
1151
1148
|
const mode = process__default.env.MODE || ssgOptions.mode || nodeEnv;
|
|
@@ -1160,12 +1157,13 @@ async function build(ssgOptions = {}, viteConfig = {}) {
|
|
|
1160
1157
|
ssgOut: _ssgOutDir = node_path.join(root, ".vite-ssg-temp", Math.random().toString(36).substring(2, 12)),
|
|
1161
1158
|
formatting = "none",
|
|
1162
1159
|
minifyOptions = {},
|
|
1163
|
-
crittersOptions = {},
|
|
1160
|
+
// crittersOptions = {},
|
|
1164
1161
|
beastiesOptions = {},
|
|
1165
1162
|
includedRoutes: configIncludedRoutes = DefaultIncludedRoutes,
|
|
1166
|
-
onBeforePageRender,
|
|
1167
|
-
onPageRendered,
|
|
1168
|
-
onDonePageRender,
|
|
1163
|
+
// onBeforePageRender,
|
|
1164
|
+
// onPageRendered,
|
|
1165
|
+
// onDonePageRender,
|
|
1166
|
+
numberOfWorkers: _numberOfWorkers = 5,
|
|
1169
1167
|
onFinished,
|
|
1170
1168
|
dirStyle = "flat",
|
|
1171
1169
|
includeAllRoutes = false,
|
|
@@ -1174,6 +1172,14 @@ async function build(ssgOptions = {}, viteConfig = {}) {
|
|
|
1174
1172
|
rootContainerId = "app"
|
|
1175
1173
|
} = Object.assign({}, config.ssgOptions || {}, ssgOptions);
|
|
1176
1174
|
const ssgOut = node_path.isAbsolute(_ssgOutDir) ? _ssgOutDir : node_path.join(root, _ssgOutDir);
|
|
1175
|
+
const createProxyOptions = {
|
|
1176
|
+
format,
|
|
1177
|
+
out,
|
|
1178
|
+
dirStyle,
|
|
1179
|
+
viteConfig: {
|
|
1180
|
+
configFile: config.configFile
|
|
1181
|
+
}
|
|
1182
|
+
};
|
|
1177
1183
|
let willRunBuild = true;
|
|
1178
1184
|
if (fs__default.existsSync(ssgOut)) {
|
|
1179
1185
|
willRunBuild = !ssgOptions["skip-build"];
|
|
@@ -1181,28 +1187,87 @@ async function build(ssgOptions = {}, viteConfig = {}) {
|
|
|
1181
1187
|
await fs__default.remove(ssgOut);
|
|
1182
1188
|
}
|
|
1183
1189
|
}
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1190
|
+
const buildPromises = [];
|
|
1191
|
+
if (willRunBuild) {
|
|
1192
|
+
const clientWorker = createProxy({
|
|
1193
|
+
...createProxyOptions,
|
|
1194
|
+
workerId: "client"
|
|
1195
|
+
});
|
|
1196
|
+
clientWorker.on("unhandledRejection", (error) => {
|
|
1197
|
+
console.error(error);
|
|
1198
|
+
clientWorker.terminate();
|
|
1199
|
+
});
|
|
1200
|
+
const cpBuildClient = execInWorker(clientWorker, buildClient, config, viteConfig).finally(() => clientWorker.terminate());
|
|
1201
|
+
buildPromises.push(cpBuildClient);
|
|
1189
1202
|
}
|
|
1190
1203
|
const ssrEntry = await resolveAlias(config, entry);
|
|
1191
|
-
if (willRunBuild)
|
|
1192
|
-
|
|
1204
|
+
if (willRunBuild) {
|
|
1205
|
+
const serverWorker = createProxy({
|
|
1206
|
+
...createProxyOptions,
|
|
1207
|
+
workerId: "server"
|
|
1208
|
+
});
|
|
1209
|
+
const cpBuildServer = execInWorker(serverWorker, buildServer, config, viteConfig, { ssrEntry, ssgOut, format, mock }).finally(() => serverWorker.terminate());
|
|
1210
|
+
buildPromises.push(cpBuildServer);
|
|
1211
|
+
}
|
|
1212
|
+
await Promise.all(buildPromises);
|
|
1193
1213
|
const prefix = format === "esm" && process__default.platform === "win32" ? "file://" : "";
|
|
1194
1214
|
const ext = format === "esm" ? ".mjs" : ".cjs";
|
|
1215
|
+
const numberOfWorkers = Math.max(1, _numberOfWorkers);
|
|
1216
|
+
console.log(`${kolorist.gray("[vite-ssg]")} ${kolorist.blue(`Using ${numberOfWorkers} workers`)}`);
|
|
1217
|
+
const workers = Array.from({ length: numberOfWorkers }, (_, index) => createProxy({
|
|
1218
|
+
...createProxyOptions,
|
|
1219
|
+
workerId: index
|
|
1220
|
+
}));
|
|
1221
|
+
const workersInUse = /* @__PURE__ */ new Map();
|
|
1222
|
+
const terminateWorker = async (worker, onFinished2) => {
|
|
1223
|
+
if (onFinished2) {
|
|
1224
|
+
await execInWorker(worker, onFinished2);
|
|
1225
|
+
}
|
|
1226
|
+
const foundIndex = workers.indexOf(worker);
|
|
1227
|
+
if (foundIndex > -1) {
|
|
1228
|
+
workers.splice(foundIndex, 1);
|
|
1229
|
+
}
|
|
1230
|
+
await worker.terminate().finally(() => {
|
|
1231
|
+
workersInUse.delete(worker);
|
|
1232
|
+
});
|
|
1233
|
+
};
|
|
1234
|
+
const terminateWorkers = async (onFinished2) => {
|
|
1235
|
+
await Promise.all(workers.map((worker) => terminateWorker(worker, onFinished2)));
|
|
1236
|
+
};
|
|
1237
|
+
let workerIndex = 0;
|
|
1238
|
+
const maxTasksPerWorker = Math.ceil(concurrency / numberOfWorkers);
|
|
1239
|
+
const workerTasksRunning = (w) => workersInUse.get(w)?.length || 0;
|
|
1240
|
+
const selectIdleWorker = () => workers.filter((w) => workerTasksRunning(w) < maxTasksPerWorker).sort((a, b) => workerTasksRunning(a) - workerTasksRunning(b))[0];
|
|
1241
|
+
const selectWorker = async (workerIndex2) => {
|
|
1242
|
+
const index = workerIndex2 ?? Math.round(Math.random() * numberOfWorkers);
|
|
1243
|
+
const maybeWorker = workers[index % numberOfWorkers];
|
|
1244
|
+
const worker = maybeWorker && workerTasksRunning(maybeWorker) < maxTasksPerWorker ? maybeWorker : selectIdleWorker();
|
|
1245
|
+
if (!worker) {
|
|
1246
|
+
await Promise.race(Array.from(workersInUse.values()).flat());
|
|
1247
|
+
return selectWorker(workerIndex2);
|
|
1248
|
+
}
|
|
1249
|
+
const workerPromises = workersInUse.get(worker) || [];
|
|
1250
|
+
const delayPromise = new Promise((resolve) => setImmediate(resolve));
|
|
1251
|
+
workerPromises.push(delayPromise);
|
|
1252
|
+
workersInUse.set(worker, workerPromises);
|
|
1253
|
+
delayPromise.finally(() => {
|
|
1254
|
+
const workerPromises2 = workersInUse.get(worker) || [];
|
|
1255
|
+
const foundIndex = workerPromises2.indexOf(delayPromise);
|
|
1256
|
+
if (foundIndex > -1) {
|
|
1257
|
+
workerPromises2.splice(foundIndex, 1);
|
|
1258
|
+
}
|
|
1259
|
+
workersInUse.set(worker, workerPromises2);
|
|
1260
|
+
});
|
|
1261
|
+
return worker;
|
|
1262
|
+
};
|
|
1195
1263
|
const serverEntry = prefix + node_path.join(ssgOut, node_path.parse(ssrEntry).name + ext).replace(/\\/g, "/");
|
|
1196
|
-
const _require = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.
|
|
1264
|
+
const _require = node_module.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('shared/vite-ssg-optimized.e58a8d97.cjs', document.baseURI).href)));
|
|
1197
1265
|
const { createApp, includedRoutes: serverEntryIncludedRoutes } = format === "esm" ? await import(serverEntry) : _require(serverEntry);
|
|
1198
1266
|
const includedRoutes = serverEntryIncludedRoutes || configIncludedRoutes;
|
|
1199
1267
|
const { routes } = await createApp(false);
|
|
1200
1268
|
let routesPaths = includeAllRoutes ? routesToPaths(routes) : await includedRoutes(routesToPaths(routes), routes || []);
|
|
1201
1269
|
routesPaths = Array.from(new Set(routesPaths));
|
|
1202
1270
|
buildLog("Rendering Pages...", routesPaths.length);
|
|
1203
|
-
const beasties = beastiesOptions !== false ? await getBeastiesOrCritters(outDir, beastiesOptions) : void 0;
|
|
1204
|
-
if (beasties)
|
|
1205
|
-
console.log(`${kolorist.gray("[vite-ssg]")} ${kolorist.blue("Critical CSS generation enabled via `beasties`")}`);
|
|
1206
1271
|
const {
|
|
1207
1272
|
path: _ssrManifestPath,
|
|
1208
1273
|
content: ssrManifestRaw
|
|
@@ -1217,46 +1282,76 @@ async function build(ssgOptions = {}, viteConfig = {}) {
|
|
|
1217
1282
|
indexHTML = rewriteScripts(indexHTML, script);
|
|
1218
1283
|
const IS_PROD = nodeEnv === "production";
|
|
1219
1284
|
indexHTML = await formatHtml(indexHTML, IS_PROD ? "minify" : formatting, minifyOptions);
|
|
1285
|
+
const workerRunCount = /* @__PURE__ */ new WeakMap();
|
|
1286
|
+
const MAX_RUNS_PER_WORKER = 100;
|
|
1287
|
+
let lastWorkerIndex = workers.length - 1;
|
|
1288
|
+
function replaceWorker(workerProxy) {
|
|
1289
|
+
const index = workers.indexOf(workerProxy);
|
|
1290
|
+
if (index === -1) {
|
|
1291
|
+
return workerProxy;
|
|
1292
|
+
}
|
|
1293
|
+
++lastWorkerIndex;
|
|
1294
|
+
config.logger.info(`${kolorist.blue("[vite-ssg]")} ${kolorist.yellow(`Replace worker #${workerProxy.id} => #${lastWorkerIndex}`)}`);
|
|
1295
|
+
const workerPromises = workersInUse.get(workerProxy) || [];
|
|
1296
|
+
const newWorkerProxy = createProxy({
|
|
1297
|
+
...createProxyOptions,
|
|
1298
|
+
workerId: lastWorkerIndex
|
|
1299
|
+
});
|
|
1300
|
+
workers[index] = newWorkerProxy;
|
|
1301
|
+
Promise.allSettled([...workerPromises, Promise.resolve()]).then(async () => {
|
|
1302
|
+
await terminateWorker(workerProxy, onFinished);
|
|
1303
|
+
});
|
|
1304
|
+
return newWorkerProxy;
|
|
1305
|
+
}
|
|
1220
1306
|
const queue = new PQueue({ concurrency });
|
|
1221
|
-
const
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1307
|
+
for (const route of routesPaths) {
|
|
1308
|
+
await queue.onSizeLessThan(concurrency);
|
|
1309
|
+
queue.add(async () => {
|
|
1310
|
+
let workerProxy = await selectWorker(workerIndex++ % numberOfWorkers);
|
|
1311
|
+
const currentCount = (workerRunCount.get(workerProxy) ?? 0) + 1;
|
|
1312
|
+
workerRunCount.set(workerProxy, currentCount);
|
|
1313
|
+
if (currentCount > MAX_RUNS_PER_WORKER) {
|
|
1314
|
+
workerRunCount.delete(workerProxy);
|
|
1315
|
+
workerProxy = replaceWorker(workerProxy);
|
|
1316
|
+
}
|
|
1317
|
+
let retryCount = 0;
|
|
1318
|
+
const maxRetries = 3;
|
|
1319
|
+
const execOpts = {
|
|
1320
|
+
route,
|
|
1228
1321
|
ssrManifest,
|
|
1229
|
-
format,
|
|
1230
|
-
out,
|
|
1231
|
-
beastiesOptions,
|
|
1232
|
-
dirStyle,
|
|
1233
1322
|
indexHTML,
|
|
1234
1323
|
rootContainerId,
|
|
1235
1324
|
formatting,
|
|
1236
1325
|
minifyOptions,
|
|
1237
|
-
|
|
1238
|
-
|
|
1326
|
+
// out,
|
|
1327
|
+
// dirStyle,
|
|
1328
|
+
beastiesOptions,
|
|
1329
|
+
serverEntry
|
|
1330
|
+
};
|
|
1331
|
+
const taskPromise = executeTaskInWorker(workerProxy, execOpts);
|
|
1332
|
+
const workerPromises = workersInUse.get(workerProxy) || [];
|
|
1333
|
+
workerPromises.push(taskPromise);
|
|
1334
|
+
workersInUse.set(workerProxy, workerPromises);
|
|
1335
|
+
const retryFn = async (e) => {
|
|
1336
|
+
if (retryCount++ < maxRetries) {
|
|
1337
|
+
console.log(`${kolorist.gray("[vite-ssg]")} ${kolorist.yellow(`Retrying ${retryCount} of ${maxRetries} for route: ${kolorist.cyan(route)}`)}`);
|
|
1338
|
+
return await executeTaskInWorker(workerProxy, execOpts).catch(retryFn);
|
|
1239
1339
|
}
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
const workerProxy = workers[workerIndex];
|
|
1250
|
-
workerIndex = (workerIndex + 1) % numberOfWorkers;
|
|
1251
|
-
queue.add(async () => {
|
|
1252
|
-
const taskPromise = executeTaskInWorker(workerProxy, {
|
|
1253
|
-
route
|
|
1340
|
+
throw e;
|
|
1341
|
+
};
|
|
1342
|
+
taskPromise.catch(retryFn).finally(() => {
|
|
1343
|
+
const workerPromises2 = workersInUse.get(workerProxy) || [];
|
|
1344
|
+
const foundIndex = workerPromises2.indexOf(taskPromise);
|
|
1345
|
+
if (foundIndex > -1) {
|
|
1346
|
+
workerPromises2.splice(foundIndex, 1);
|
|
1347
|
+
}
|
|
1348
|
+
workersInUse.set(workerProxy, workerPromises2);
|
|
1254
1349
|
});
|
|
1255
1350
|
return taskPromise;
|
|
1256
1351
|
});
|
|
1257
1352
|
}
|
|
1258
1353
|
await queue.start().onIdle();
|
|
1259
|
-
|
|
1354
|
+
await terminateWorkers(onFinished);
|
|
1260
1355
|
if (!ssgOptions["skip-build"]) {
|
|
1261
1356
|
await fs__default.remove(ssgOut);
|
|
1262
1357
|
}
|
|
@@ -1276,14 +1371,10 @@ ${kolorist.gray("[vite-ssg]")} ${kolorist.green("Build finished.")}`);
|
|
|
1276
1371
|
timeout.unref();
|
|
1277
1372
|
}
|
|
1278
1373
|
function executeTaskInWorker(worker, opts) {
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
acc[newKey] = value;
|
|
1284
|
-
return acc;
|
|
1285
|
-
}, {});
|
|
1286
|
-
return worker.send("executeTaskFn", [opts]);
|
|
1374
|
+
return execInWorker(worker, executeTaskFn, opts);
|
|
1375
|
+
}
|
|
1376
|
+
async function execInWorker(worker, fn, ...args) {
|
|
1377
|
+
return await worker.send(fn.name, plainify(args ?? []));
|
|
1287
1378
|
}
|
|
1288
1379
|
async function executeTaskFn(opts) {
|
|
1289
1380
|
const {
|
|
@@ -1292,7 +1383,7 @@ async function executeTaskFn(opts) {
|
|
|
1292
1383
|
renderToString,
|
|
1293
1384
|
indexHTML,
|
|
1294
1385
|
onBeforePageRender,
|
|
1295
|
-
onDonePageRender,
|
|
1386
|
+
// onDonePageRender,
|
|
1296
1387
|
onPageRendered,
|
|
1297
1388
|
ssrManifest,
|
|
1298
1389
|
rootContainerId,
|
|
@@ -1352,7 +1443,6 @@ async function executeTaskFn(opts) {
|
|
|
1352
1443
|
config.logger.info(
|
|
1353
1444
|
`${kolorist.dim(`${outDir}/`)}${kolorist.cyan(filename.padEnd(15, " "))} ${kolorist.dim(getSize(formatted))}`
|
|
1354
1445
|
);
|
|
1355
|
-
onDonePageRender?.(route, html, appCtx);
|
|
1356
1446
|
return { route, html };
|
|
1357
1447
|
});
|
|
1358
1448
|
} catch (err) {
|
|
@@ -1360,6 +1450,27 @@ async function executeTaskFn(opts) {
|
|
|
1360
1450
|
${err.stack}`);
|
|
1361
1451
|
}
|
|
1362
1452
|
}
|
|
1453
|
+
function plainify(m) {
|
|
1454
|
+
if (m instanceof Function) {
|
|
1455
|
+
return void 0;
|
|
1456
|
+
}
|
|
1457
|
+
if (Array.isArray(m)) {
|
|
1458
|
+
return m.map(plainify);
|
|
1459
|
+
}
|
|
1460
|
+
if (typeof m === "object" && m !== null) {
|
|
1461
|
+
if (m instanceof Error || "stack" in m) {
|
|
1462
|
+
return {
|
|
1463
|
+
message: m.message,
|
|
1464
|
+
stack: m.stack
|
|
1465
|
+
};
|
|
1466
|
+
}
|
|
1467
|
+
return Object.entries(m).reduce((acc, [key, value]) => {
|
|
1468
|
+
acc[key] = plainify(value);
|
|
1469
|
+
return acc;
|
|
1470
|
+
}, {});
|
|
1471
|
+
}
|
|
1472
|
+
return m;
|
|
1473
|
+
}
|
|
1363
1474
|
async function detectEntry(root) {
|
|
1364
1475
|
const scriptSrcReg = /<script.*?src=["'](.+?)["'](?!<).*>\s*<\/script>/gi;
|
|
1365
1476
|
const html = await fs__default.readFile(node_path.join(root, "index.html"), "utf-8");
|
|
@@ -1459,5 +1570,7 @@ async function readFiles(...paths) {
|
|
|
1459
1570
|
}
|
|
1460
1571
|
|
|
1461
1572
|
exports.build = build;
|
|
1573
|
+
exports.buildClient = buildClient;
|
|
1574
|
+
exports.buildServer = buildServer;
|
|
1462
1575
|
exports.executeTaskFn = executeTaskFn;
|
|
1463
|
-
exports.
|
|
1576
|
+
exports.plainify = plainify;
|
package/package.json
CHANGED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { InlineConfig } from 'vite';
|
|
2
|
-
import { b as ViteSSGOptions } from './vite-ssg-optimized.cf5cb4ee.cjs';
|
|
3
|
-
|
|
4
|
-
type Manifest = Record<string, string[]>;
|
|
5
|
-
declare function build(ssgOptions?: Partial<ViteSSGOptions & {
|
|
6
|
-
'skip-build'?: boolean;
|
|
7
|
-
}>, viteConfig?: InlineConfig): Promise<void>;
|
|
8
|
-
|
|
9
|
-
export { type Manifest as M, build as b };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { InlineConfig } from 'vite';
|
|
2
|
-
import { b as ViteSSGOptions } from './vite-ssg-optimized.cf5cb4ee.mjs';
|
|
3
|
-
|
|
4
|
-
type Manifest = Record<string, string[]>;
|
|
5
|
-
declare function build(ssgOptions?: Partial<ViteSSGOptions & {
|
|
6
|
-
'skip-build'?: boolean;
|
|
7
|
-
}>, viteConfig?: InlineConfig): Promise<void>;
|
|
8
|
-
|
|
9
|
-
export { type Manifest as M, build as b };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { InlineConfig } from 'vite';
|
|
2
|
-
import { b as ViteSSGOptions } from './vite-ssg-optimized.cf5cb4ee.js';
|
|
3
|
-
|
|
4
|
-
type Manifest = Record<string, string[]>;
|
|
5
|
-
declare function build(ssgOptions?: Partial<ViteSSGOptions & {
|
|
6
|
-
'skip-build'?: boolean;
|
|
7
|
-
}>, viteConfig?: InlineConfig): Promise<void>;
|
|
8
|
-
|
|
9
|
-
export { type Manifest as M, build as b };
|