问题记录-关于 VUECLI3+ 容易忽视的问题-环境变量与build

背景

由于近两年技术栈切换到了Vue3.0,打包工具自然而然的切换到了Vite,导致在维护旧的项目时会忽视一些关键性问题。在最近一次开发过程中,发现测试环境部署的项目一直存在比较严重的缓存问题,排查后发现是打包后的文件hash值没有发生变化,导致浏览器直接读取缓存文件,而没有重新请求资源。

追根溯源

既然发现是build过程中发现的问题,就查阅了VUECLI3+的文档,发现文档中关于环境变量的说明中,有这么一段话:

当运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV 变量,它的值将取决于模式,例如,在 production 模式下被设置为 “production”,在 test 模式下被设置为 “test”,默认则是 “development”。

NODE_ENV 将决定您的应用运行的模式,是开发,生产还是测试,因此也决定了创建哪种 webpack 配置。

例如通过将 NODE_ENV 设置为 “test”,Vue CLI 会创建一个优化过后的,并且旨在用于单元测试的 webpack 配置,它并不会处理图片以及一些对单元测试非必需的其他资源。

同理,NODE_ENV=development 创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是为了在开发的时候能够快速重新构建。

当你运行 vue-cli-service build 命令时,无论你要部署到哪个环境,应该始终把 NODE_ENV 设置为 “production”来获取可用于部署的应用程序。

解决方案

上述文档描述的很清楚了,顺着文档的描述将test的环境变量NODE_ENV设置为”production”即可。

总结

在开发过程中,文档能解决框架90%的问题,因此,在开发过程中,一定要仔细阅读文档,避免走弯路。

参考

Vue CLI - 模式与环境变量


问题记录-关于 VUECLI3+ 容易忽视的问题-环境变量与build
https://blog.funfe.cn/2024/02/23/20240223162747/
作者
李鹏杰
发布于
2024年2月23日
许可协议