build-plugin-rax-app
Version:
The basic webpack configuration for rax project
113 lines • 5.08 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var hasOwnProperty_1 = __importDefault(require("../utils/hasOwnProperty"));
var logDeprecatedConfig_1 = __importDefault(require("../utils/logDeprecatedConfig"));
var constants_1 = require("../constants");
var taskList = [
{
name: constants_1.WEB,
children: ['pha', 'ssr'],
},
{
name: constants_1.WEEX,
},
{
name: constants_1.KRAKEN,
},
];
[constants_1.MINIAPP, constants_1.WECHAT_MINIPROGRAM, constants_1.BYTEDANCE_MICROAPP].forEach(function (target) {
taskList.push({
name: target,
children: ["rax-compiled-components-".concat(target)],
});
});
exports.default = (function (api) {
var _a, _b;
var context = api.context, modifyUserConfig = api.modifyUserConfig, cancelTask = api.cancelTask, log = api.log;
var userConfig = context.userConfig;
var originalTargets = userConfig.targets, webpack5 = userConfig.webpack5, swc = userConfig.swc;
var devTargets = context.commandArgs.devTargets;
var newUserConfig = __assign(__assign({}, userConfig), { webpack5: Boolean(webpack5) });
// Modify userConfig.targets
if (devTargets) {
var targets_1 = devTargets.split(',');
newUserConfig.targets = targets_1;
// Cancel task
if (originalTargets.length > targets_1.length) {
var removeTargets_1 = originalTargets.filter(function (target) { return !targets_1.includes(target); });
taskList.forEach(function (_a) {
var name = _a.name, children = _a.children;
if (removeTargets_1.includes(name)) {
cancelTask(name);
if (children) {
children.forEach(function (childTask) { return cancelTask(childTask); });
}
}
});
}
}
// Modify web mpa config with pha
if (userConfig.web && userConfig.web.pha) {
newUserConfig.web = __assign(__assign({}, newUserConfig.web), { mpa: true });
}
// Unify all targets mpa config
var hasMPA = newUserConfig.targets.some(function (target) { return newUserConfig[target] && (newUserConfig[target].mpa || newUserConfig[target].buildType === 'webview'); });
if (hasMPA) {
newUserConfig.targets
// Avoid miniapp runtime mode be became MPA
.filter(function (target) { return !constants_1.MINIAPP_PLATFORMS.includes(target); })
.forEach(function (target) {
if (!newUserConfig[target]) {
newUserConfig[target] = {};
}
newUserConfig[target] = __assign(__assign({}, newUserConfig[target]), { mpa: true });
});
newUserConfig.mpa = true;
// Warning tip when use miniapp runtime mode with MPA
for (var _i = 0, _c = newUserConfig.targets; _i < _c.length; _i++) {
var target = _c[_i];
if (constants_1.MINIAPP_PLATFORMS.includes(target) && !((_a = newUserConfig[target]) === null || _a === void 0 ? void 0 : _a.subpackages) && ((_b = newUserConfig[target]) === null || _b === void 0 ? void 0 : _b.buildType) !== 'webview') {
log.error('小程序非分包模式不推荐和 MPA 应用同时使用,下一个大版本将禁止该能力!');
}
}
}
// Deprecate in v4.0
// Minify options
Object.keys(constants_1.DEPRECATED_CONFIG).forEach(function (deprecatedConfigKey) {
if ((0, hasOwnProperty_1.default)(userConfig, deprecatedConfigKey)) {
newUserConfig.minify = {
type: constants_1.DEPRECATED_CONFIG[deprecatedConfigKey],
options: newUserConfig[deprecatedConfigKey],
};
(0, logDeprecatedConfig_1.default)(log, deprecatedConfigKey, "Please use \n".concat(JSON.stringify({ minify: newUserConfig.minify }, null, 2)));
}
});
if (swc) {
// Modify minify config
if (!(0, hasOwnProperty_1.default)(userConfig, 'minify')) {
newUserConfig.minify = 'swc';
}
// Warning in the cases that are not applicable
if (newUserConfig.targets.some(function (target) { return constants_1.MINIAPP_PLATFORMS.includes(target); })) {
log.warn('小程序构建暂未支持 swc,页面生命周期以及与原生混用能力将失效,后续将完善该场景');
}
}
modifyUserConfig(function () {
return newUserConfig;
});
});
//# sourceMappingURL=modify.js.map