@tarojs/webpack-runner
Version:
webpack runner for taro
157 lines • 7.76 kB
JavaScript
"use strict";
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var _AppHelper_appConfig, _AppHelper_pages, _AppHelper_pagesConfigList, _AppHelper_comps, _AppHelper_compsConfigList;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppHelper = void 0;
const helper_1 = require("@tarojs/helper");
const lodash_1 = require("lodash");
const path = require("path");
class AppHelper {
constructor(entry = {}, options = {}) {
_AppHelper_appConfig.set(this, void 0);
_AppHelper_pages.set(this, void 0);
_AppHelper_pagesConfigList.set(this, void 0);
_AppHelper_comps.set(this, void 0);
_AppHelper_compsConfigList.set(this, void 0);
this.options = (0, lodash_1.defaults)(options || {}, {
sourceDir: '',
entryFileName: 'app',
frameworkExts: helper_1.SCRIPT_EXT
});
this.entry = entry;
}
get appEntry() {
// Note: 不考虑 `() => Promise` 情况
const { entryFileName, sourceDir } = this.options;
const appEntry = this.entry[entryFileName];
if (!appEntry)
return path.join(sourceDir, entryFileName);
if (Array.isArray(appEntry)) {
return appEntry.filter(item => path.basename(item, path.extname(item)) === entryFileName)[0];
}
else if (Array.isArray(appEntry.import)) {
return appEntry.import.filter(item => path.basename(item, path.extname(item)) === entryFileName)[0];
}
return appEntry;
}
get appConfig() {
if (!__classPrivateFieldGet(this, _AppHelper_appConfig, "f")) {
const appConfigPath = this.getConfigFilePath(this.appEntry);
const appConfig = (0, helper_1.readConfig)(appConfigPath);
if ((0, helper_1.isEmptyObject)(appConfig)) {
throw new Error('缺少 app 全局配置,请检查!');
}
__classPrivateFieldSet(this, _AppHelper_appConfig, appConfig, "f");
}
return __classPrivateFieldGet(this, _AppHelper_appConfig, "f");
}
get pages() {
if (!__classPrivateFieldGet(this, _AppHelper_pages, "f")) {
const appPages = this.appConfig.pages;
if (!appPages || !appPages.length) {
throw new Error('全局配置缺少 pages 字段,请检查!');
}
const { frameworkExts, sourceDir } = this.options;
__classPrivateFieldSet(this, _AppHelper_pages, new Set([
...appPages.map(item => ({
name: item,
path: (0, helper_1.resolveMainFilePath)(path.join(sourceDir, item), frameworkExts)
}))
]), "f");
this.getSubPackages();
}
return __classPrivateFieldGet(this, _AppHelper_pages, "f");
}
get comps() {
if (!__classPrivateFieldGet(this, _AppHelper_comps, "f")) {
const appPages = this.appConfig.components;
if (!appPages || !appPages.length) {
throw new Error('全局配置缺少 components 字段,请检查!');
}
const { frameworkExts, sourceDir } = this.options;
__classPrivateFieldSet(this, _AppHelper_comps, new Set([
...appPages.map(item => ({
name: item,
path: (0, helper_1.resolveMainFilePath)(path.join(sourceDir, item), frameworkExts)
}))
]), "f");
}
return __classPrivateFieldGet(this, _AppHelper_comps, "f");
}
getSubPackages() {
const subPackages = this.appConfig.subPackages || this.appConfig.subpackages;
const { frameworkExts, sourceDir } = this.options;
if (subPackages && subPackages.length) {
subPackages.forEach(item => {
if (item.pages && item.pages.length) {
const root = item.root;
item.pages.forEach(page => {
var _a;
let pageItem = `${root}/${page}`;
pageItem = pageItem.replace(/\/{2,}/g, '/');
let hasPageIn = false;
this.pages.forEach(({ name }) => {
if (name === pageItem) {
hasPageIn = true;
}
});
if (!hasPageIn) {
const pagePath = (0, helper_1.resolveMainFilePath)(path.join(sourceDir, pageItem), frameworkExts);
this.pages.add({
name: pageItem,
path: pagePath
});
(_a = this.appConfig.pages) === null || _a === void 0 ? void 0 : _a.push(pageItem);
}
});
}
});
}
}
get pagesConfigList() {
if (!__classPrivateFieldGet(this, _AppHelper_pagesConfigList, "f")) {
const list = new Map();
const pages = this.pages;
pages.forEach(({ name, path }) => {
const pageConfigPath = this.getConfigFilePath(path);
list.set(name, pageConfigPath);
});
__classPrivateFieldSet(this, _AppHelper_pagesConfigList, list, "f");
}
return __classPrivateFieldGet(this, _AppHelper_pagesConfigList, "f");
}
get compsConfigList() {
if (!__classPrivateFieldGet(this, _AppHelper_compsConfigList, "f")) {
const list = new Map();
const comps = this.comps;
comps.forEach(({ name, path }) => {
const pageConfigPath = this.getConfigFilePath(path);
list.set(name, pageConfigPath);
});
__classPrivateFieldSet(this, _AppHelper_compsConfigList, list, "f");
}
return __classPrivateFieldGet(this, _AppHelper_compsConfigList, "f");
}
getConfigFilePath(filePath = '') {
// console.log('filePath: ', filePath)
return (0, helper_1.resolveMainFilePath)(`${filePath.replace(path.extname(filePath), '')}.config`);
}
clear() {
__classPrivateFieldSet(this, _AppHelper_appConfig, undefined, "f");
__classPrivateFieldSet(this, _AppHelper_pages, undefined, "f");
__classPrivateFieldSet(this, _AppHelper_pagesConfigList, undefined, "f");
}
}
exports.AppHelper = AppHelper;
_AppHelper_appConfig = new WeakMap(), _AppHelper_pages = new WeakMap(), _AppHelper_pagesConfigList = new WeakMap(), _AppHelper_comps = new WeakMap(), _AppHelper_compsConfigList = new WeakMap();
//# sourceMappingURL=app.js.map