@zero-scripts/webpack-config
Version:
Base configuration for Webpack
45 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebpackConfigModifications = void 0;
const core_1 = require("@zero-scripts/core");
const OneOfModification_1 = require("./modifications/OneOfModification");
/**
* An API designed for modifying webpack configuration by plugins
*/
class WebpackConfigModifications extends core_1.AbstractModificationsContainer {
insertPlugin(plugin, position = core_1.InsertPos.End, modificationId) {
this.modifications.push(new core_1.ConfigModification(c => c.plugins, core_1.ConfigModification.arrayInsertCreator(() => plugin, position), modificationId));
return this;
}
insertModuleRule(rule, position = core_1.InsertPos.Middle) {
this.getOneOfModification().rules.push({ rule, position });
return this;
}
insertCommonModuleRule(rule, position = core_1.InsertPos.Middle, modificationId) {
this.modifications.push(new core_1.ConfigModification(c => c.module.rules, core_1.ConfigModification.arrayInsertCreator(() => rule, position), modificationId));
return this;
}
insertMinimizer(minimizer, position = core_1.InsertPos.Middle, modificationId) {
this.modifications.push(new core_1.ConfigModification(c => c.optimization.minimizer, core_1.ConfigModification.arrayInsertCreator(() => minimizer, position), modificationId));
return this;
}
addResolveAlias(alias, path, modificationId) {
this.modifications.push(new core_1.ConfigModification(c => c.resolve.alias, prevValue => {
return Object.assign(Object.assign({}, prevValue), { [alias]: path });
}, modificationId));
return this;
}
getOneOfModification() {
const foundModification = this.modifications.find(modification => modification.id === OneOfModification_1.OneOfModification.id);
if (!foundModification) {
const modification = new OneOfModification_1.OneOfModification();
this.modifications.push(modification);
return modification;
}
else {
return foundModification;
}
}
}
exports.WebpackConfigModifications = WebpackConfigModifications;
//# sourceMappingURL=WebpackConfigModifications.js.map