|
|
@@ -1,6 +1,7 @@
|
|
|
var path = require('path');
|
|
|
var webpack = require('webpack');
|
|
|
var ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
|
+var HtmlWebpackPlugin = require('html-webpack-plugin');
|
|
|
|
|
|
module.exports = {
|
|
|
entry: {
|
|
|
@@ -9,14 +10,16 @@ module.exports = {
|
|
|
'src/title': './app/src/Title/Title.jsx',
|
|
|
'src/table': './app/component/Table.jsx',
|
|
|
'src/form': './app/src/Form/index.js',
|
|
|
- 'src/chart': './app/src/Charts/ECharts.js'
|
|
|
+ 'src/chart': './app/src/Charts/ECharts.js',
|
|
|
+ vendor: ['react', 'react-dom']
|
|
|
},
|
|
|
externals: {
|
|
|
- echarts: 'window.echarts'
|
|
|
+ echarts: 'echarts'
|
|
|
},
|
|
|
output: {
|
|
|
path: path.resolve(__dirname, './build'),
|
|
|
- filename: '[name].bundle.js'
|
|
|
+ filename: '[name].bundle.js',
|
|
|
+ chunkFilename: "[name].[chunkHash:8].js"
|
|
|
},
|
|
|
module: {
|
|
|
loaders: [
|
|
|
@@ -49,6 +52,7 @@ module.exports = {
|
|
|
]
|
|
|
},
|
|
|
plugins: [
|
|
|
+ // webapck配置
|
|
|
new webpack.LoaderOptionsPlugin({
|
|
|
options: {
|
|
|
devServer: {
|
|
|
@@ -57,29 +61,40 @@ module.exports = {
|
|
|
}
|
|
|
}
|
|
|
}),
|
|
|
- /**
|
|
|
- * 代码压缩
|
|
|
- */
|
|
|
+ // 代码压缩
|
|
|
// new webpack.optimize.UglifyJsPlugin({
|
|
|
// compress: {
|
|
|
// warnings: false
|
|
|
// }
|
|
|
// }),
|
|
|
+ // 生产环境
|
|
|
new webpack.DefinePlugin({
|
|
|
"process.env": {
|
|
|
NODE_ENV: JSON.stringify("production")
|
|
|
}
|
|
|
}),
|
|
|
+ // 样式分离打包
|
|
|
new ExtractTextPlugin({
|
|
|
filename: (getPath) => {
|
|
|
return getPath('css/[name].css').replace('src/', '').replace('css/js', 'css');
|
|
|
},
|
|
|
allChunks: true
|
|
|
}),
|
|
|
+ // 公共模块打包
|
|
|
new webpack.optimize.CommonsChunkPlugin({
|
|
|
- names: 'commons',
|
|
|
- filename: '[name].bundle.js',
|
|
|
- minChunks: 4,
|
|
|
+ names: ['vendor', 'manifest']
|
|
|
}),
|
|
|
+ // 生成入口html
|
|
|
+ new HtmlWebpackPlugin({ //根据模板插入css/js等生成最终HTML
|
|
|
+ favicon:'./app/assets/images/favicon.ico', //favicon路径
|
|
|
+ filename:'./boardshow.html', //生成的html存放路径,相对于 path
|
|
|
+ template:'./app/index.html', //html模板路径
|
|
|
+ inject:true, //允许插件修改哪些内容,包括head与body
|
|
|
+ hash:true, //为静态资源生成hash值
|
|
|
+ minify:{ //压缩HTML文件
|
|
|
+ removeComments:true, //移除HTML中的注释
|
|
|
+ collapseWhitespace:false //删除空白符与换行符
|
|
|
+ }
|
|
|
+ })
|
|
|
]
|
|
|
};
|