dool-build
Version:
d-band tool & dev tool
108 lines (85 loc) • 3 kB
JavaScript
;
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'];