hm-react-cli
Version:
Create a Huimei React project by module
84 lines (78 loc) • 2.52 kB
JavaScript
const path = require('path');
const webpack = require('webpack');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); //多线程压缩
// 以项目的基础目录我基础,解析路径
function baseResolve(...dir) {
return path.resolve(__dirname, ...dir);
}
// const vendors = [
// baseResolve('node_modules','axios'),
// baseResolve('node_modules','anujs/dist/ReactIE'),
// baseResolve('node_modules','anujs/dist/Rematch.js'),
// baseResolve('node_modules','anujs/lib/ReduxIE'),
// baseResolve('node_modules','anujs/lib/ReactPropTypes'),
// baseResolve('node_modules','react-router'),
// baseResolve('node_modules','react-redux')
// ];
const vendors = [
'axios',
'anujs/dist/ReactIE',
'anujs/dist/Rematch.js',
'anujs/lib/ReduxIE',
'anujs/lib/ReactPropTypes',
'react-router',
'react-redux'
];
module.exports = {
entry: {
vendor: vendors
},
output: {
path: path.resolve(__dirname, 'dll'),
filename: 'Dll.js',
library: '[name]_[hash]'
},
plugins: [
new webpack.DllPlugin({
path: path.resolve(__dirname, 'dll', 'manifest.json'),
name: '[name]_[hash]',
context: '/'
})
],
resolve: {
mainFields: ['main', 'jsnext:main', 'browser'], //npm读取先后方式 jsnext:main 是采用es6模块写法
alias: {
// antd: path.resolve(__dirname, 'antd'),
anujs: path.resolve(__dirname, 'package-modules/anujs'),
// 框架相关包替换
react: 'anujs/dist/ReactIE',
'react-dom':'anujs/dist/ReactIE',
'prop-types': 'anujs/lib/ReactPropTypes',
rematch: 'anujs/dist/Rematch.js',
'@reach/router': 'anujs/dist/Router.js'
}
//配置别名,在项目中可缩减引用路径
},
optimization: {
minimizer: [
new UglifyJsPlugin({
parallel: true,
cache: true,
uglifyOptions: {
ie8: true,
output: {
comments: false,
beautify: false
},
ie: true,
merge_vars: false,
compress: {
// drop_console: true,
drop_debugger: true
}
},
exclude: /(bower_components)/
})
]
}
};