模式和环境变量
一、模式
模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式:
- development 模式用于 vue-cli-service serve
- test 模式用于 vue-cli-service test:unit
- production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
-mode
你可以通过传递 --mode 选项参数为命令行覆写默认的模式。例如,如果你想要在构建命令中使用开发环境变量:
1 |
|
当运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV 变量,它的值将取决于模式,例如,在 production 模式下被设置为 “production”,在 test 模式下被设置为 “test”,默认则是 “development”。
NODE_ENV
如果在环境中有默认的 NODE_ENV,你应该移除它或在运行 vue-cli-service 命令的时候明确地设置 NODE_ENV。
NODE_ENV 将决定您的应用运行的模式,是开发,生产还是测试,因此也决定了创建哪种 webpack 配置。
例如通过将 NODE_ENV 设置为 “test”,Vue CLI 会创建一个优化过后的,并且旨在用于单元测试的 webpack 配置,它并不会处理图片以及一些对单元测试非必需的其他资源。
同理,NODE_ENV=development 创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是为了在开发的时候能够快速重新构建。
当你运行 vue-cli-service build 命令时,无论你要部署到哪个环境,应该始终把 NODE_ENV 设置为 “production” 来获取可用于部署的应用程序。
二、环境变量
你可以在你的项目根目录中放置下列文件来指定环境变量:
1 |
|
一个环境文件只包含环境变量的“键=值”对:
1 |
|
Staging 模式
假设我们有一个应用包含以下 .env 文件:
1 |
|
和 .env.staging 文件:
1 |
|
- vue-cli-service build 会加载可能存在的 .env、.env.production 和 .env.production.local 文件然后构建出生产环境应用。
- vue-cli-service build --mode staging 会在 staging 模式下加载可能存在的 .env、.env.staging 和 .env.staging.local 文件然后构建出生产环境应用。
这两种情况下,根据 NODE_ENV,构建出的应用都是生产环境应用,但是在 staging 版本中,process.env.VUE_APP_TITLE 被覆写成了另一个值(My App (staging))
三、实例
- 在项目根目录创建三个配置文件
.env.development 内容如下:
1 |
|
.env.production 内容如下:
1 |
|
.env.test 内容如下:
1 |
|
- 运行测试
1 |
|
package.json配置文件如下:
1 |
|
说明配置好了
执行 npm run serve ,则默认读取.env.development文件内容
结果:baseUrl: http://localhost/dev + ‘《开发环境》’
执行 npm run build ,则读取.env.production文件内容
结果:baseUrl: http://localhost/pro + ‘《生产环境》’
执行 npm run test ,则读取.env.test文件内容
结果:baseUrl:http://localhost/test + ’ 《测试环境》 ’