1 三种模式
- development 模式用于 vue-cli-service serve
- test 模式用于 vue-cli-service test:unit
- production 模式用于 vue-cli-service build 和 vue-cli-service test:e2e
当运行 vue-cli-service 命令时,所有的环境变量都从对应的环境文件中载入。如果文件内部不包含 NODE_ENV 变量,它的值将取决于模式,例如,在 production 模式下被设置为 “production”,在 test 模式下被设置为 “test”,默认则是 “development”。
如果你想要在构建命令中使用开发环境变量,需要使用–mode参数,例如:
vue-cli-service build --mode development
2 环境变量
在项目根目录中新建下列文件来指定环境变量文件
.env # 在所有的环境中被载入 .env.local # 在所有的环境中被载入,但会被 git 忽略 .env.[mode] # 只在指定的模式中被载入 .env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
环境文件的内容格式只允许包含环境变量的“键=值”对,例如:
// .env.dev VUE_APP_ENV=dev NODE_ENV=development # 默认base地址 VUE_APP_API_BASE=https://api-xxx.com
3 在客户端侧代码中使用环境变量
在环境文件中,以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端侧的包中。你可以在项目的代码中这样访问它们:
console.log(process.env.VUE_APP_SECRET)
除了 VUE_APP_* 变量之外,在你的应用代码中始终可用的还有两个特殊的变量:
NODE_ENV - 会是 "development"、"production" 或 "test" 中的一个。具体的值取决于应用运行的模式。 BASE_URL - 会和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径。
所有解析出来的环境变量都可以在 public/index.html 中以 HTML 插值中介绍的方式使用。
在 vue.config.js 文件中计算环境变量。它们仍然需要以 VUE_APP_ 前缀开头。这可以用于版本信息:
// vue.config.js process.env.VUE_APP_VERSION = require('./package.json').version module.exports = { // config }
4 只在本地有效的变量
.local结尾的本地环境文件默认会被忽略,且出现在 .gitignore 中。比如 .env.development.local 将会在 development 模式下被载入,且被 git 忽略。