wci-build
Version:
A webpack scaffold
122 lines (96 loc) • 3.34 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _path = _interopRequireDefault(require("path"));
var _webpack = _interopRequireDefault(require("webpack"));
var _lodash = _interopRequireDefault(require("lodash"));
var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
var _htmlWebpackPlugin = _interopRequireDefault(require("html-webpack-plugin"));
var _htmlWebpackIncludeAssetsPlugin = _interopRequireDefault(require("html-webpack-include-assets-plugin"));
var _config = require("./config");
/*
* @Author: jason
* @Date: 2017-11-25 08:51:24
* @Last Modified by: jason
* @Last Modified time: 2019-09-26 14:17:24
*/
var dll = _config.DEFAULT_DLL.dll,
dllPath = _config.DEFAULT_DLL.dllPath,
_DEFAULT_DLL$dllType = _config.DEFAULT_DLL.dllType,
dllType = _DEFAULT_DLL$dllType === void 0 ? 'antd' : _DEFAULT_DLL$dllType;
var urlsAntd = _lodash["default"].map(_lodash["default"].filter(dll.manifest, {
type: 'js',
name: dllType
}), 'url');
var urlsCommon = _lodash["default"].map(_lodash["default"].filter(dll.manifest, {
type: 'js',
name: 'common'
}), 'url');
var manifestesAntd = _lodash["default"].map(_lodash["default"].filter(dll.manifest, {
type: 'json',
name: dllType
}), 'filename');
var manifestesCommon = _lodash["default"].map(_lodash["default"].filter(dll.manifest, {
type: 'json',
name: 'common'
}), 'filename'); // 地址
var urls = _lodash["default"].concat(urlsCommon, urlsAntd); // 解析
var mfs = _lodash["default"].concat(manifestesCommon, manifestesAntd); // mfs解析
var drpArr = [];
for (var i = 0; i < mfs.length; i += 1) {
var p = "".concat(dllPath, "/").concat(mfs[i]);
drpArr.push(require(p));
}
/**
* [config description]
* @type {Object}
*/
var config = {
resolve: {
extensions: ['.js', '.jsx']
},
optimization: {
splitChunks: {
chunks: 'async',
name: true
},
noEmitOnErrors: true
},
module: {
rules: [{
test: /\.js|jsx$/,
include: _path["default"].resolve(_config.DEFAULT_PATH, _config.DEFAULT_SRC),
use: [{
loader: 'babel-loader'
}]
}]
},
plugins: [new _htmlWebpackPlugin["default"]({
template: "".concat(_config.DEFAULT_SRC, "/index.tpl.html"),
inject: 'body',
filename: 'index.html',
title: "".concat(_config.DEFAULT_NAME),
favicon: "".concat(_config.DEFAULT_SRC, "/assets/wci_favicon.ico")
}), new _htmlWebpackIncludeAssetsPlugin["default"]({
assets: (0, _toConsumableArray2["default"])(_lodash["default"].map(urls, function (item) {
return _lodash["default"].replace(item, '/', '\\/');
})),
// 添加的资源相对html的路径
append: false,
publicPath: ''
})].concat((0, _toConsumableArray2["default"])(_lodash["default"].map(drpArr, function (item) {
return new _webpack["default"].DllReferencePlugin({
manifest: item
});
})))
};
if (_config.DEFAULT_ANALYZER.open) {
config.plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin());
}
var _default = config;
exports["default"] = _default;
module.exports = exports.default;