前端项目中的环境变量

75 阅读2分钟

我们在代码开发到上线阶段的过程中可能会涉及到不同的环境,例如:开发环境,测试环境,以及生产环境 对于不同的环境,我们可能会涉及到不同的配置,打个比方说:我们在发送aixos网络请求的时候,不同的环境所发送的请求地址可能不一样,此时我们需要有一个东西来进行区分——环境变量

如何定义环境变量

命令行临时定义

创建环境变量

这种方式是在我们启动相关命令的时候进行环境变量的临时定义 linux:

NODE_ENV=production npm run build

window: 方法一:使用 cross-env 跨平台配置

npm install cross-env --save-dev

修改 package.json 中的脚本配置

"scripts": {
  "dev": "cross-env test=111 vue-cli-service serve"
}

方法二:Windows 原生命令格式

set "VUE_APP_TEST=111" && npm run dev

这种方式只会在当前服务运行过程中生效,如果此次服务停止,下次启动的时候直接使用命令是不具备NODE_ENV=production的效果,因此不推荐这种方式

读取环境变量

package.json脚本写法(跨平台推荐)

我们可以在package.json文件中添加我们需要使用的环境变量

创建环境变量

{
"script"{
    "start":"NODE_ENV=development npm run dev"
}
}

使用环境变量

我们可以直接在项目中的各个地方直接用process.env.NODE_ENV 读取环境变量 这种方式比较推荐在跨平台的用法上

使用.env文件

创建环境变量

在项目根目录下新建.env .env.developmenet .env.production等文件:
.env文件

NODE_ENV=development

.env.production

NODE_ENV=production

Vue CLI , Vite 等会自动加载和选择这些文件,会根据你当前的环境来自动选择合适的.env文件

文件分类

通常有以下几种: -.env(所有环境都会加载,基础配置)
-.env.developementP(开发环境专用)
-.env.production(生产环境专用)
-.env.test(测试环境专用)

加载优先级

文件加载优先级排序: -.env.[mode].local(如.env.development.local)
-.env.[mode] (如.env.development)
-.env.local
-.env

环境区分

如何区分环境 -开发环境:当你运行npm run serve , pnpm run dev会自动设置process.env.NODE_ENV=development , 加载 .env.development
-生产环境:当你运行npm run build , pnpm run build会自动设置process.env.NODE_ENV=production ,加载.env.production
-测试环境:当你运行npm run test,会自动设置 process.env.NODE_ENV=test,加载.env.test

使用变量

在.env文件中定义的变量(例如VUE_APP_API_URL=xxx),可以在代码中通过process.env.VUE_APP_API_URL进行读取,但是要注意的是 自定义变量必须以VUE_APP_(Vue CLI) , VITE_(Vite) , REACT_APP_ (CRA)开头

这种方法好用并且简单,推荐!