UNPKG

dool-build

Version:
108 lines (85 loc) 3 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getConfig; var _path = require('path'); var _webpack = require('webpack'); var _webpack2 = _interopRequireDefault(_webpack); var _loaders = require('./loaders'); var _loaders2 = _interopRequireDefault(_loaders); var _plugins = require('./plugins'); var _plugins2 = _interopRequireDefault(_plugins); var _merge = require('./merge'); var _merge2 = _interopRequireDefault(_merge); var _mixEntry = require('./mixEntry'); var _mixEntry2 = _interopRequireDefault(_mixEntry); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } function base(args) { var pkg = require((0, _path.join)(args.cwd, 'package.json')); var jsFileName = args.hash ? '[name]-[chunkhash].js' : '[name].js'; return { context: args.cwd, output: { path: (0, _path.join)(args.cwd, './dist/'), filename: jsFileName, chunkFilename: jsFileName }, devtool: args.devtool, resolve: { modules: ['node_modules', (0, _path.join)(__dirname, '../node_modules')], extensions: ['*', '.js', '.jsx'] }, resolveLoader: { modules: ['node_modules', (0, _path.join)(__dirname, '../node_modules')] }, entry: (0, _mixEntry2.default)(pkg.files, pkg.entry, args), externals: pkg.externals, module: { rules: (0, _loaders2.default)(args) }, plugins: (0, _plugins2.default)(args), performance: { hints: args.compress ? 'warning' : false, maxAssetSize: 400000, maxEntrypointSize: 400000 } }; } function npm3Hack(cfg) { var doolPath = (0, _path.join)(__dirname, '../..'); if (~doolPath.indexOf('dool')) { cfg.resolveLoader.modules.push(doolPath); } return cfg; } function getConfig(args) { var cfg = base(args); cfg = npm3Hack(cfg); // Config outputPath & publicPath. if (args.outputPath) { cfg.output.path = args.outputPath; } if (args.publicPath) { cfg.output.publicPath = args.publicPath; } // Output map.json if hash. if (args.hash) { cfg.output.filename = cfg.output.chunkFilename = '[name]-[chunkhash].js'; cfg.plugins = [].concat(_toConsumableArray(cfg.plugins), [require('map-json-webpack-plugin')()]); } cfg = (0, _merge2.default)(cfg, (0, _path.join)(args.cwd, args.config || 'webpack.config.js'), _webpack2.default); var cfgs = Array.isArray(cfg) ? cfg : [cfg]; cfgs.forEach(function (cfg) { cfg.module.rules.forEach(function (rule) { if (rule.key) delete rule.key; }); cfg.plugins = [].concat(_toConsumableArray(cfg.plugins), [new _webpack2.default.LoaderOptionsPlugin({ debug: !args.compress, minimize: args.compress })]); }); return cfgs; } module.exports = exports['default'];