ssr
Version:
cli for react/vue2/vue3 ssr deploy on serverless or tradtional web server
39 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addChunkNameInRoutes = exports.addChunkNameInQuery = void 0;
const fs_1 = require("fs");
const path_1 = require("path");
const es_module_lexer_1 = require("es-module-lexer");
const magic_string_1 = require("magic-string");
const webpackCommentRegExp = /webpackChunkName:\s?"(.*)?"\s?\*/;
const addChunkNameInQuery = (source) => {
var _a;
let str = new magic_string_1.default(source);
const imports = (0, es_module_lexer_1.parse)(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();
};
exports.addChunkNameInQuery = addChunkNameInQuery;
const addChunkNameInRoutes = async () => {
const { getCwd } = await Promise.resolve().then(() => require('ssr-common-utils'));
const cwd = getCwd();
const declareRoutes = await fs_1.promises.readFile((0, path_1.resolve)(cwd, './build/ssr-declare-routes.js'), 'utf-8');
await fs_1.promises.writeFile((0, path_1.resolve)(cwd, './build/ssr-declare-routes.js'), (0, exports.addChunkNameInQuery)(declareRoutes));
const manualRoutes = await fs_1.promises.readFile((0, path_1.resolve)(cwd, './build/ssr-manual-routes.js'), 'utf-8');
await fs_1.promises.writeFile((0, path_1.resolve)(cwd, './build/ssr-manual-routes.js'), (0, exports.addChunkNameInQuery)(manualRoutes));
};
exports.addChunkNameInRoutes = addChunkNameInRoutes;
//# sourceMappingURL=add-chunk-name.js.map