你完全可以在自己的代码中使用process.env.NODE_ENV来区分开发和生产,从而针对不同的环境做一些事情。不用担心这部分代码会被保留,最终会被 UglifyJS 删除。例如:
if (process.env.NODE_ENV != "production") { // 开发环境 } // webpack.DefinePlugin插件替换后,上述代码会变成 if ("production" != "production") { // 开发环境 } // 输出 if (false) { // 开发环境 } // UglifyJS 会删除这段无效代码
使用上述插件后再次构建,会发现生成的JS相比原来的体积小了不少。
friendly-errors-webpack-plugin 是一个更友好显示 webpack 错误信息的插件。插件 github 地址:https://github.com/geowarin/friendly-errors-webpack-plugin
一般在开发环境下使用。
var FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin'); var webpackConfig = { // ... plugins: [ new FriendlyErrorsWebpackPlugin(), ], // ... }
效果如下图:
显示构建进度插件:webpack.ProgressPlugin
{ // ... plugins: [ new webpack.ProgressPlugin(), ], // ... }
效果如下图:
美化 webpack 编译控制台打印的信息的插件webpack-dashboard
分离Webpack配置
将开发和生产配置文件分离,方便增加各个环境下的个性配置。Webpack2文档中也详细阐述了如何为多环境配置webpack。基本思路如下:
- 编写一个基本配置文件(webpack.base.config.js)
- 使用webpack-merge合并这个基础配置和针对环境的特定的配置(webpack.dev.config.js,webpack.prod.config.js)
webpack.base.config.js 内容如下:
var webpack = require('webpack'); var path = require('path'); var utils = require('./utils'); function resolve(relPath) { return path.resolve(__dirname, relPath); } module.exports = { entry: { app: resolve('../src/main.js') }, output: { filename: 'js/[name].js' }, module: { rules: [{ test: /\.js$/, use: "babel-loader", include: [resolve('../src')] }, { test: /\.vue$/, use: { loader: "vue-loader", options: utils.vueLoaderOptions() } }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, use: { loader: "url-loader", options: { limit: 10000, name: 'images/[name].[hash:7].[ext]' } } }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, use: [{ loader: "url-loader", options: { limit: 10000, name: 'fonts/[name].[hash:7].[ext]' } }] } ] } }
内容版权声明:除非注明,否则皆为本站原创文章。