auto-gen-react
Version:
create multiple app based es6+webpack, eg: react, react+redux
88 lines (79 loc) • 2.66 kB
JavaScript
import webpack from 'webpack';
import ExtractTextPlugin from "extract-text-webpack-plugin";
import webpackMerge from 'webpack-merge';
import UglifyJsPlugin from 'uglifyjs-webpack-plugin';
import AssetsPlugin from 'assets-webpack-plugin';
import path from 'path';
import webpackBaseConf from './webpack.config.base';
import baseConfig from './baseConfig';
// 添加css,js压缩
const webpackProConf = webpackMerge(webpackBaseConf, {
output: {
publicPath: baseConfig.publicPath,
filename: 'js/[name].[chunkhash:8].js',
},
module: {
// css压缩
rules: [
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader?minimize',
'postcss-loader',
]
}),
},
{
test: /\.less$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: [
'css-loader?minimize',
'postcss-loader',
'less-loader',
],
}),
},
],
},
plugins: [
// 生成asserts json
new AssetsPlugin({
filename: 'assets.json',
path: path.resolve(baseConfig.rootDir, 'dist'),
prettyPrint: true,
}),
// 代码中注入变量
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(baseConfig.env),
}),
// js压缩 此插件压缩比下面的更好
new UglifyJsPlugin({
uglifyOptions: {
cache: true,
warnings: false,
compress: {
warnings: false,
// 内嵌定义了但是只用到一次的变量
collapse_vars: true,
// 提取出出现多次但是没有定义成变量去引用的静态值
reduce_vars: true,
// 删除所有的 `console` 语句
// 还可以兼容ie浏览器
drop_console: true,
// 死代码消除
dead_code: true,
},
output: {
// 删除所有的注释
comments: false,
// 最紧凑的输出
beautify: false,
},
}
}),
]
});
export default webpackProConf;