刚开始用 webpack 的时候,开发环境和生产环境用的是同一个 webpack 配置文件,导致生产环境打包的 JS 文件包含了一大堆没必要的插件,比如 HotModuleReplacementPlugin, NoErrorsPlugin... 这时候不管用什么优化方式,都没多大效果。所以,如果你打包后的文件非常大的话,先检查下是不是包含了这些插件。
2、去除devtool选项
很多教程都会教你在webpack.config.js中设置devtool选项,比如devtool: 'eval-source-map'。但是这只适用于开发环境,这会造成打包的文件往往有几M,所以在生产环境必须去除此配置
3、分离CSS 安装插件:npm install extract-text-webpack-plugin --save var ExtractTextPlugin = require("extract-text-webpack-plugin"); //webpack.config.js ... loaders:[ { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") }, { test: /\.less$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader!less-loader") }, ... ... plugins: [ ... new ExtractTextPlugin("bundle.css") ] 4、使用webpack.optimize.UglifyJsPlugin插件压缩混淆js代码,使用方法如下: plugins: [//webpack.config.jsnew webpack.optimize.UglifyJsPlugin({ warnings: false, compress: { join_vars: true, warnings: false, }, toplevel: false, ie8: false, }),] 5、 提取第三方库 像 react 这个库的核心代码就有 627 KB,这样和我们的源代码放在一起打包,体积肯定会很大。所以可以在 webpack 中设置 { entry: { bundle: 'app' vendor: ['react'] } plugins: { new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js') } }使用Lodash时,往往只需要使用其中部分功能,但整个文件引入是不合理的,我们需要通过插件让Webpack按需引入模块。 配置webpack.config.js
var LodashModuleReplacementPlugin = require('lodash-webpack-plugin'); var webpack = require('webpack'); module.exports = { module: { loaders: [{ loader: 'babel', test: /\.js$/, exclude: /node_modules/ }] }, babel: { presets: ['es2015'], plugins: ['transform-runtime', 'lodash'] }, plugins: [ new LodashModuleReplacementPlugin, new webpack.optimize.OccurrenceOrderPlugin, new webpack.optimize.UglifyJsPlugin ] }