process.env是什么
process.env 在 Node.js 环境中是一个全局对象,提供了访问当前 Node.js 进程所关联的环境变量的能力。
- 系统级环境变量:
-
NODE_ENV:用于标识当前的应用环境(如开发环境development、生产环境production等)。 -
HOME:用户的主目录路径。 -
PATH:系统查找命令的路径列表。 -
TERM:终端类型。 -
TMPDIR或TEMP:临时文件夹路径。 -
其他系统级别设定的环境变量。
- 自定义环境变量:
- 开发者可以自定义任何环境变量,例如
DATABASE_URL、SECRET_KEY、PORT(应用程序监听的端口号)等。
在 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用于测试环境。
举个栗子:
-
测试环境变量配置文件
.env.developent -
生产环境变量配置文件
.env.
怎么调试
运行 npm run serve 或 yarn 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使用场景
- 区分开发环境与生产环境:
在代码逻辑里面区别开发和生产环境做特殊逻辑
if (process.env.NODE_ENV === 'development') {
console.warn(
'submitAvoidDuplicate is preventing',
...[original.toString().match(/\w+\([\w,\s]*\)/)?.[0], 'from running!'].filter(noNil)
);
}
- 密钥和敏感信息管理
不应将敏感信息(API 密钥、密码、数据库连接字符串等)硬编码到源代码中。
- 功能开关和调试辅助:
生产版本打包去掉console等信息
- 性能优化和最小化:
// 生产环境不打包ui和ta
if (process.env.NODE_ENV !== 'development' && ['ui', 'ta'].map(it => './' + it + '.ts').includes(key)) {
return;
}
- 多环境部署策略:
部署测试环境、生产环境