1.Vue的模式
development
模式用于vue-cli-service serve (开发环境)
test
模式用于vue-cli-service test:unit (测试环境 --- 一般开发中为确保项目不会出错,都会设置测试环境供测试人员进行测试,也就是test )
production
模式用于vue-cli-service build
和vue-cli-service test:e2e (生产环境)
也就是package.json中对应的代码片段,通过在node中运行对应的命令来匹配不同的环境
当运行行 vue-cli-service
命令时,所有的环境变量都从对应的环境文件中载入,以下图为例,我们当前想在测试环境就运行:npm run build:test 打包后的文件就是test环境 ,而执行npm run dev就是我们的开发环境啦
像Vue官网说的我们可以通过--mode
选项参数为命令行覆写默认的模式。例如,如果你想要在构建命令中使用开发环境变量(上图代码也是如此实现):
vue-cli-service build --mode development
还有其他选项修饰符比如 --open 在我们启动项目时可自动在浏览器中打开项目:
命令的使用具体可参考Vue官网: CLI 服务 | Vue CLI
2.配置环境变量
项目中以.env.mode开头的文文件会在对应的环境下被载入,如下图:当我们执行npm run build:test时.env.test文件会被自动加载
.env.[mode] # 只在指定的模式中被载入
NODE_ENV
变量决定运行的模式,是开发,生产还是测试,也决定了创建哪种 webpack 配置。
例如通过将 NODE_ENV
设置为 "test"
,Vue CLI 会创建一个优化过后的,并且旨在用于单元测试的 webpack 配置,它并不会处理图片以及一些对单元测试非必需的其他资源。
同理,NODE_ENV=development
创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是为了在开发的时候能够快速重新构建。
运行 vue-cli-service
命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV
变量,它的值将取决于模式,例如,在 production
模式下被设置为 "production"
,在 test
模式下被设置为 "test"
,默认则是 "development"
当你运行 vue-cli-service build
命令时,无论你要部署到哪个环境,应该始终把 NODE_ENV
设置为 "production"
来获取可用于部署的应用程序,下面图二图三为运行 vue-cli-service build后的test和production环境
,应该始终把 NODE_ENV
设置为 "production"
如上图可以设置同一个变量在不同环境下的值来实现想要的效果,最常用的就是配置不同环境下的请求头,可以通过process.env获取当前环境下.env.[当前环境]文件中的所有变量
配置不同环境下的配置: