项目N套环境

149 阅读2分钟

一. 目标

  • 各种环境配置

二. 实现

项目开发中, 一般会有2到3套环境, 比如开发环境,预生产环境,生产环境等; 相应的,我们项目中也会为各种环境做出相应的配置,以满足开发需求.

1.vue-cli3的模式(mode)

在vue-cli-service命令中传入mode命令, 就会加载相应的环境文件, 进而做到根据打包命令生成不同环境的项目代码.

vue-cli-service build --mode development

2.环境文件

只有 NODE_ENV,BASE_URL 和以 VUE_APP_ 开头的变量将通过 webpack.DefinePlugin 静态地嵌入到客户端侧的代码中。这是为了避免意外公开机器上可能具有相同名称的私钥。

当运行vue-cli-service build --mode development时, 会加载.env.development和.env.development.local

.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]         # 只在指定的模式中被载入
.env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略

环境文件是键值对的方式来定义变量

FOO=bar
VUE_APP_NOT_SECRET_CODE=some_value

package.js中命令说明

...
"scripts": {
    "serve:dev": "vue-cli-service serve --mode dev",
    "serve:pre": "vue-cli-service serve --mode pre",
    "serve:prd": "vue-cli-service serve --mode prd",
    "build:dev": "vue-cli-service build --mode dev",
    "build:pre": "vue-cli-service build --mode pre",
    "build:prd": "vue-cli-service build --mode prd",
    "lint": "vue-cli-service lint"
  },
...

3. 以3种环境为例

开发环境,预生产环境,生产环境

  • 新建3种环境文件
.env.dev
.env.pre
.env.prd
  • 设置环境变量 设置NODE_ENV和VUE_APP_ENV变量,在代码中可以正常使用
// .env.dev
NODE_ENV=dev
VUE_APP_ENV=dev

// .env.pre
NODE_ENV=production
VUE_APP_ENV=pre

// .env.prd
NODE_ENV=production
VUE_APP_ENV=prd
  • 代码中使用环境变量
<template>
  ...
</template>

<script>
...
	created() {
		console.log('当前环境变量NODE_ENV:', process.env.NODE_ENV);
		console.log('当前环境变量VUE_APP_ENV:', process.env.VUE_APP_ENV);
	}
}
</script>

  • package.js中命令说明
...
"scripts": {
    "serve:dev": "vue-cli-service serve --mode dev",
    "serve:pre": "vue-cli-service serve --mode pre",
    "serve:prd": "vue-cli-service serve --mode prd",
    "build:dev": "vue-cli-service build --mode dev",
    "build:pre": "vue-cli-service build --mode pre",
    "build:prd": "vue-cli-service build --mode prd",
    "lint": "vue-cli-service lint"
  },
...