UNPKG

vue-styleguidist

Version:
48 lines (45 loc) 1.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = mergeWebpackConfig; var _isFunction = _interopRequireDefault(require("lodash/isFunction")); var _omit = _interopRequireDefault(require("lodash/omit")); var _webpackMerge = _interopRequireDefault(require("webpack-merge")); var IGNORE_SECTIONS = ['entry', 'output', 'watch', 'stats', 'styleguidist']; var IGNORE_SECTIONS_ENV = { development: [], // For production builds, we'll ignore devtool settings to avoid // source mapping bloat. production: ['devtool'], removePlugins: ['plugins'] }; var IGNORE_PLUGINS = ['CommonsChunkPlugins', 'MiniHtmlWebpackPlugin', 'HtmlWebpackPlugin', 'OccurrenceOrderPlugin', 'DedupePlugin', 'UglifyJsPlugin', 'HotModuleReplacementPlugin']; var merge = (0, _webpackMerge["default"])({ // Ignore user’s plugins to avoid duplicates and issues with our plugins customizeArray: _webpackMerge["default"].unique('plugins', IGNORE_PLUGINS, function (plugin) { return plugin.constructor && plugin.constructor.name; }) }); //make it a typeguard function isFunc(conf) { return (0, _isFunction["default"])(conf); } /** * Merge two Webpack configs. * * In the user config: * - Ignores given sections (options.ignore). * - Ignores plugins that shouldn’t be used twice or may cause issues. * * @param {object} baseConfig * @param {object|Function} userConfig * @param {string} env * @return {object} */ function mergeWebpackConfig(baseConfig, userConfig, env_) { var userConfigObject = isFunc(userConfig) ? userConfig(env_) : userConfig; var safeUserConfig = (0, _omit["default"])(userConfigObject, IGNORE_SECTIONS.concat(IGNORE_SECTIONS_ENV[env_])); return merge(baseConfig, safeUserConfig); }