Vue-cli3 配置环境变量与分环境打包
配置环境变量
在前端项目开发完成后,在发布的时候,我们会需要将项目部署到不同环境,例如开发,测试,预发布,生产。
这个时候就需要前端项目根据部署的环境,配置 环境变量 进行打包。
我们可以在前端项目的根目录下新增以下 环境变量文件:
1 | .env # 在所有的环境中都会被载入 |
环境变量文件只包含环境变量的 键值对,例如
1 | // 接口地址 |
除了自定义的 VUE_APP_* 变量之外,环境变量文件中还有 2 个特殊的变量:
1 | NODE_ENV # develop、production、test 中的一个。具体的值取决于运行的模式 |
为一个指定模式的准备环境变量文件如 .env.staging 会比一般的环境变量文件 .env 拥有更高的优先级。
Vue-cli3 模式概念
模式是 vue-cli 项目中的一个重要概念,一般情况下会有 3 个模式:
1 | development 模式用于 vue-cli-service serve # 默认 NODE_ENV=development |
模式不等同于 NODE_ENV, 一个模式可以包含多个环境变量
可以通过传递 --mode 选项参数覆写默认的模式,例如使用 .env.staging 的环境变量
1 | "staging": "vue-cli-service build --mode staging" |
.env.staging 文件
1 | // 表明这是生产环境,webpack需要打包 |
这样使用 npm run staging 命令的时候, 只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端侧的包中,即可以在项目代码中使用,例如 process.env.VUE_APP_BASE_URL 就可以获取环境变量文件中的值。
理解指令、模式、环境变量间的关系
在 vue-cli3 中有一个 vue-cli-service 的命令,可以在 package.json 中看到。
vue-cli-service 命令
1 | 用法: |
当运行以下命令
1 | "staging": "vue-cli-service build --mode staging" |
如果 env.staging 文件未声明 NODE_ENV=production 则 webpack 会以开发模式打包。