了解process.env环境变量

442 阅读2分钟

process.env是什么

process.env 在 Node.js 环境中是一个全局对象,提供了访问当前 Node.js 进程所关联的环境变量的能力。

  1. 系统级环境变量
  • NODE_ENV:用于标识当前的应用环境(如开发环境 development、生产环境 production 等)。

  • HOME:用户的主目录路径。

  • PATH:系统查找命令的路径列表。

  • TERM:终端类型。

  • TMPDIRTEMP:临时文件夹路径。

  • 其他系统级别设定的环境变量。

  1. 自定义环境变量
  • 开发者可以自定义任何环境变量,例如 DATABASE_URLSECRET_KEYPORT(应用程序监听的端口号)等。

在 Web 开发中,特别是使用像 Webpack、Parcel 或 Vue CLI 这样的构建工具时,process.env 还被用于注入构建过程中的环境变量,从而在应用程序中实现环境感知配置。例如,在 Vue.js 项目中,可以通过 .env 文件配置环境变量,然后在代码中通过 process.env.VUE_APP_SOME_VARIABLE 来访问它们。

环境变量文件的加载遵循规则

在 Vue CLI 项目中,环境变量文件的加载遵循以下规则:

  • .env:默认环境变量文件,所有环境都生效。

  • .env.local:本地环境变量文件,会被自动加载,但不会提交到版本控制系统。

  • .env.[mode]:对应特定环境的环境变量文件,例如 .env.production 用于生产环境,.env.test.env.developent 用于测试环境。

举个栗子:

  1. 测试环境变量配置文件.env.developent

  2. 生产环境变量配置文件.env.

怎么调试

运行 npm run serveyarn serve 时,启动开发服务器时,vue.config.js 文件将被执行,并且在终端中可以看到 console.log 输出的信息。

process.env可以获取什么内容


vue.config.js

process.env.NODE_ENV // 获取当前的所处的环境

process.env.VUE_APP_PUBLIC_PATH // 获取.env文件环境配置的环境变量

.env

VUE_APP_PUBLIC_PATH=/jv/v2/

process.env使用场景

  1. 区分开发环境与生产环境

在代码逻辑里面区别开发和生产环境做特殊逻辑


if (process.env.NODE_ENV === 'development') {

console.warn(

'submitAvoidDuplicate is preventing',

...[original.toString().match(/\w+\([\w,\s]*\)/)?.[0], 'from running!'].filter(noNil)

);

}

  1. 密钥和敏感信息管理

不应将敏感信息(API 密钥、密码、数据库连接字符串等)硬编码到源代码中。

  1. 功能开关和调试辅助

生产版本打包去掉console等信息

  1. 性能优化和最小化

// 生产环境不打包ui和ta

if (process.env.NODE_ENV !== 'development' && ['ui', 'ta'].map(it => './' + it + '.ts').includes(key)) {

return;

}

  1. 多环境部署策略

部署测试环境、生产环境