@srejs/vue-webpack
Version:
srejs vue技术栈webpack配置工具包
84 lines (83 loc) • 2.97 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.EntryList = exports.EntryFilesMap = void 0;
exports.getEntry = getEntry;
exports.getEntryList = getEntryList;
exports.initEntry = initEntry;
exports.webpackEntryMap = exports.webpackEntry = void 0;
var _path = require("path");
var _fs = require("fs");
var _common = require("@srejs/common");
var EntryFilesMap = exports.EntryFilesMap = new Map();
var EntryList = exports.EntryList = new Set([]);
var webpackEntry = exports.webpackEntry = {};
var webpackEntryMap = exports.webpackEntryMap = new Map();
var entryDir = (0, _common.getEntryDir)();
function getEntry(page) {
if (page == true || page == 0 || typeof page == 'boolean') {
return webpackEntry;
} else {
//一次打包多个入口文件以逗号分隔
var pageArray = page.split(',') || [];
var entry = {};
pageArray.forEach(function (pageName) {
entry["".concat(pageName, "/").concat(pageName)] = webpackEntryMap.get(pageName);
});
return entry;
}
}
function createEntry(page) {
try {
var rootDir = (0, _common.getOptions)('rootDir');
var rootNode = (0, _common.getOptions)('rootNode');
var data = _fs.readFileSync(_path.join(__dirname, './', 'vue.entry.tpl'), 'utf8');
var entryName = false;
var entrysFileList = ['index.js', 'index.ts', 'index.tsx', "".concat(page, ".js"), "".concat(page, ".ts"), "".concat(page, ".tsx")];
var exists = entrysFileList.some(function (file) {
var entryjs = _path.join(entryDir, "".concat(page, "/").concat(file));
if (_fs.existsSync(entryjs)) {
entryName = file;
EntryFilesMap.set(page, entryjs);
return true; // 存在任意一个返回true
}
});
if (exists && entryName) {
data = data.replace('$injectApp$', "../".concat(rootDir, "/pages/").concat(page, "/").concat(entryName));
data = data.replace('$rootNode$', rootNode);
var _exists = _fs.existsSync(_common.tempDir);
if (!_exists) {
_fs.mkdirSync(_common.tempDir);
}
// if (!fs.existsSync(`${tempDir}/${page}.js`)) {
// fs.writeFileSync(`${tempDir}/${page}.js`, data);
// }
_fs.writeFileSync("".concat(_common.tempDir, "/").concat(page, ".js"), data);
return true;
} else {
return false;
}
} catch (err) {
console.error("".concat(page, " Entry file creation failed in .ssr"), err);
return false;
}
}
function initEntry() {
if (EntryList.size > 0) {
return;
}
_fs.readdirSync(entryDir).forEach(function (page) {
if (page != 'index.html' && page != '.DS_Store' && createEntry(page)) {
webpackEntry["".concat(page, "/").concat(page)] = "".concat(_common.tempDir, "/").concat(page);
webpackEntryMap.set(page, "".concat(_common.tempDir, "/").concat(page));
EntryList.add(page);
}
});
}
function getEntryList() {
if (EntryList.size == 0) {
initEntry();
}
return EntryList;
}
;