最近开发了一个项目,在使用 npm run build
打包后,发现大小有点不对劲,打开一看发现这些代码并没有启用压缩,还是原来开发模式结构的代码。
就算加了 --mode production
参数还是这样
然后我在 vue-cli
官网 vue-cli官网说明 找到了这个提示:
NODE_ENV
如果在环境中有默认的 NODE_ENV,你应该移除它或在运行 vue-cli-service 命令的时候明确地设置 NODE_ENV。
我这就想起了,原来是我在自己电脑环境配置了 NODE_ENV=development
导致打包一直都是开发模式的代码
解决办法也很简单就是把它删除掉或者运行命令时明确的设置 NODE_ENV
,我需要保留这个环境变量配置,因为我有其他项目需要依赖它。
如果这样的话,我们总不能每次 npm run build
都来这配置一下为 production
吧?这样太麻烦了。
这里介绍一个 cross-env
工具,cross-env
是一个流行的 npm
包,用于在跨平台(如 Windows、Linux 和 macOS)环境中设置和使用环境变量。它允许你以一致的方式在 npm 脚本中设置环境变量,而不需要担心不同操作系统之间的命令行差异。
简单来说就是在运行 npm
脚本时可以设置一个临时的环境变量,有了它,我们只需要一个简单的命令就可以解决了
安装 npm i cross-env -D
,然后在 package.json
中修改 scripts.build
为 cross-env NODE_ENV=production vue-cli-service build
,然后在命令行窗口运行 npm run build
就可以了
注意:如果在打开命令行窗口中安装 cross-env 一定要关闭这个窗口重新打开,因为 windows 加载新命令都需要关闭重新打开才能生效
最后运行 npm run build
结果:
打印 process.env.NODE_ENV
也能够正常打印 production
了
最后总结:要么删除本地电脑环境的 NODE_ENV
,或者运行时明确指定 NODE_ENV
,如果嫌弃麻烦可以借助 cross-env
工具解决。