UNPKG

angular-cli-builders

Version:
52 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const webpackMerge = require("webpack-merge"); const lodash_1 = require("lodash"); const joinArrays = require('webpack-merge/lib/join-arrays'); class WebpackConfigMerger { static merge(webpackConfig1, webpackConfig2, mergeStrategies = {}, replacePlugins = false) { return webpackMerge({ customizeArray: replacePlugins ? mergeReplacePlugins(customizeArray(mergeStrategies)) : customizeArray(mergeStrategies), customizeObject: customizeObject(mergeStrategies) })(webpackConfig1, webpackConfig2); } } exports.WebpackConfigMerger = WebpackConfigMerger; function mergeReplacePlugins(defaultArrayMerger) { return (a, b, key) => { let plugins; if (key === 'plugins') { const aExceptb = lodash_1.differenceWith(a, b, (item1, item2) => item1.constructor.name === item2.constructor.name); plugins = [...aExceptb, ...b]; } else { plugins = defaultArrayMerger(a, b, key); } return plugins; }; } function customizeArray(strategies) { return (a, b, key) => { switch (strategies[key]) { case 'prepend': return [...b, ...a]; case 'replace': return b; default: // append return undefined; } }; } function customizeObject(strategies) { return (a, b, key) => { switch (strategies[key]) { case 'prepend': return lodash_1.mergeWith({}, b, a, joinArrays()); case 'replace': return b; default: // append return undefined; } }; } //# sourceMappingURL=webpack-config-merger.js.map