You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.2 KiB
95 lines
3.2 KiB
5 years ago
|
const webpack = require('webpack');
|
||
|
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
|
||
|
const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
|
||
|
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
|
||
|
const CleanWebpackPlugin = require('clean-webpack-plugin');
|
||
|
const merge = require('webpack-merge');
|
||
|
const common = require('./webpack.common');
|
||
|
|
||
|
const config = merge(common, {
|
||
|
mode: 'production',
|
||
|
devtool: 'hidden-source-map',
|
||
|
plugins: [
|
||
|
// 提取 css 文件
|
||
|
new MiniCssExtractPlugin({
|
||
|
filename: 'public/styles/[name].[contenthash:8].css',
|
||
|
chunkFilename: 'public/styles/[name].[contenthash:8].chunk.css'
|
||
|
}),
|
||
|
// 区分环境
|
||
|
new webpack.DefinePlugin({
|
||
|
// 定义 NODE_ENV 环境变量为 production
|
||
|
'process.env': {
|
||
|
NODE_ENV: JSON.stringify('production')
|
||
|
}
|
||
|
}),
|
||
|
// 清理 dist 文件,2.0。0 版本之后不需要设置参数就可以自动清除打包生成的目录
|
||
|
new CleanWebpackPlugin()
|
||
|
],
|
||
|
optimization: {
|
||
|
// 打包压缩js/css文件
|
||
|
minimizer: [
|
||
|
new UglifyJsPlugin({
|
||
|
uglifyOptions: {
|
||
|
compress: {
|
||
|
// 在UglifyJs删除没有用到的代码时不输出警告
|
||
|
warnings: false,
|
||
|
// 删除所有的 `console` 语句,可以兼容ie浏览器
|
||
|
drop_console: true,
|
||
|
// 内嵌定义了但是只用到一次的变量
|
||
|
collapse_vars: true,
|
||
|
// 提取出出现多次但是没有定义成变量去引用的静态值
|
||
|
reduce_vars: true,
|
||
|
},
|
||
|
output: {
|
||
|
// 最紧凑的输出
|
||
|
beautify: false,
|
||
|
// 删除所有的注释
|
||
|
comments: false,
|
||
|
}
|
||
|
}
|
||
|
}),
|
||
|
// 压缩 CSS 代码
|
||
|
new OptimizeCSSAssetsPlugin({})
|
||
|
],
|
||
|
// 拆分公共模块
|
||
|
splitChunks: {
|
||
|
cacheGroups: {
|
||
|
styles: {
|
||
|
name: 'styles',
|
||
|
test: /\.(css|less)/,
|
||
|
chunks: 'all',
|
||
|
enforce: true,
|
||
|
// 表示是否使用已有的 chunk
|
||
|
reuseExistingChunk: true
|
||
|
},
|
||
|
commons: {
|
||
|
name: 'commons',
|
||
|
chunks: 'initial',
|
||
|
minChunks: 2,
|
||
|
reuseExistingChunk: true
|
||
|
},
|
||
|
vendors: {
|
||
|
name: 'vendors',
|
||
|
test: /[\\/]node_modules[\\/]/,
|
||
|
priority: -10,
|
||
|
reuseExistingChunk: true
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
// 为每个仅含有 runtime 的入口起点添加一个额外 chunk
|
||
|
runtimeChunk: true
|
||
|
},
|
||
|
// 性能提醒
|
||
|
performance: {
|
||
|
hints: false
|
||
|
},
|
||
|
// 统计信息展示
|
||
|
stats: {
|
||
|
modules: false,
|
||
|
children: false,
|
||
|
chunks: false,
|
||
|
chunkModules: false
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = config;
|