ssr
Version:
cli for react/vue2/vue3 ssr deploy on serverless or tradtional web server
34 lines • 1.73 kB
JavaScript
import { promises } from 'fs';
import { resolve } from 'path';
import { parse as parseImports } from 'es-module-lexer';
import MagicString from 'magic-string';
const webpackCommentRegExp = /webpackChunkName:\s?"(.*)?"\s?\*/;
export const addChunkNameInQuery = (source) => {
var _a;
let str = new MagicString(source);
const imports = parseImports(source)[0];
for (let index = 0; index < imports.length; index++) {
const { s: start, e: end, se: statementEnd } = imports[index];
const rawUrl = source.slice(start, end);
const chunkName = (_a = webpackCommentRegExp.exec(rawUrl)) === null || _a === void 0 ? void 0 : _a[1];
if (rawUrl.includes('layout') || rawUrl.includes('App') || rawUrl.includes('store')) {
str = str.appendRight(statementEnd - 1, '?chunkName=Page');
}
else if (chunkName) {
str = str.appendRight(statementEnd - (rawUrl.includes('\n') ? 2 : 1), `?chunkName=${chunkName}`);
}
else {
str = str.appendRight(statementEnd - 1, '?chunkName=Page');
}
}
return str.toString();
};
export const addChunkNameInRoutes = async () => {
const { getCwd } = await import('ssr-common-utils');
const cwd = getCwd();
const declareRoutes = await promises.readFile(resolve(cwd, './build/ssr-declare-routes.js'), 'utf-8');
await promises.writeFile(resolve(cwd, './build/ssr-declare-routes.js'), addChunkNameInQuery(declareRoutes));
const manualRoutes = await promises.readFile(resolve(cwd, './build/ssr-manual-routes.js'), 'utf-8');
await promises.writeFile(resolve(cwd, './build/ssr-manual-routes.js'), addChunkNameInQuery(manualRoutes));
};
//# sourceMappingURL=add-chunk-name.js.map