问题记录-关于 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%的问题,因此,在开发过程中,一定要仔细阅读文档,避免走弯路。