4.1.1 开启生产环境模式
优质
小牛编辑
135浏览
2023-12-01
开发环境下,Vue 会提供很多警告来帮你对付常见的错误与陷阱。而在生产环境下,这些警告语句却没有用,反而会增加应用的体积。此外,有些警告检查还有一些小的运行时开销,这在生产环境模式下是可以避免的。
不使用构建工具
如果用 Vue 完整独立版本,即直接用<script>
元素引入 Vue 而不提前进行构建,请记得在生产环境下使用压缩后的版本 (vue.min.js
)。两种版本都可以在安装指导中找到。
使用构建工具
当使用 webpack 或 Browserify 类似的构建工具时,Vue 源码会根据process.env.NODE_ENV
决定是否启用生产环境模式,默认情况为开发环境模式。在 webpack 与 Browserify 中都有方法来覆盖此变量,以启用 Vue 的生产环境模式,同时在构建过程中警告语句也会被压缩工具去除。这些所有vue-cli
模板中都预先配置好了,但了解一下怎样配置会更好。
webpack
使用 webpack 的DefinePlugin来指定生产环境,以便在压缩时可以让 UglifyJS 自动删除警告代码块。例如配置:
var webpack = require('webpack') module.exports = { // ... plugins: [ // ... new webpack.DefinePlugin({ 'process.env': { NODE_ENV: '"production"' } }), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }) ] }
Browserify
- 在运行打包命令时将
NODE_ENV
设置为"production"
。这等于告诉vueify
避免引入热重载和开发相关的代码。 - 对打包后的文件进行一次全局的envify转换。这使得压缩工具能清除调 Vue 源码中所有用环境变量条件包裹起来的警告语句。例如:
NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js
- 或者在 Gulp 中使用envify:
// 使用 envify 的自定义模块来定制环境变量 var envify = require('envify/custom') browserify(browserifyOptions) .transform(vueify) .transform( // 必填项,以处理 node_modules 里的文件 { global: true }, envify({ NODE_ENV: 'production' }) ) .bundle()
- 或者配合 Grunt 和grunt-browserify使用envify:
// 使用 envify 自定义模块指定环境变量 var envify = require('envify/custom') browserify: { dist: { options: { // 该函数用来调整 grunt-browserify 的默认指令 configure: b => b .transform('vueify') .transform( // 用来处理 `node_modules` 文件 { global: true }, envify({ NODE_ENV: 'production' }) ) .bundle() } } }
Rollup
const replace = require('rollup-plugin-replace') rollup({ // ... plugins: [ replace({ 'process.env.NODE_ENV': JSON.stringify( 'production' ) }) ] }).then(...)