Node.js 终于原生支持 .env 文件了!


Node.js 终于原生支持 .env 文件了!

文章插图
近日,Node.js 团队核心成员 Ulises Gascón 在社交平台表示,Node.js 20.6 版本将原生支持 .env 文件,该版本计划于 8 月 28 日发布 。下面就来看看 .env 文件是什么,有什么作用,如果在浏览器环境中使用 .env.
Node.js 终于原生支持 .env 文件了!

文章插图
Node.js 原生支持 .env从 Node.js v20.6.0 开始,Node.js 支持使用 .env 文件来配置环境变量 。配置文件应遵循 INI 文件格式,每一行都包含一个环境变量的键值对 。通过这个新的特性,就无需再使用第三方模块来加载 .env 中的环境变量了 。
要使用预定义的配置初始化 Node.js 应用,请使用以下 CLI 命令:
node --env-file=config.env index.js 。例如,当应用初始化时,可以使用 process.env.PASSword 访问以下环境变量:
PASSWORD=nodejs除了环境变量,这个更改还允许在 .env 文件中直接定义 NODE_OPTIONS环境变量,无需将其包含在 package.json 中 。
.env.env 文件用于配置环境变量 。环境变量是在运行应用程序时向操作系统或应用传递的值,用于控制应用的行为和设置 。.env 文件通常包含敏感信息(如数据库连接字符串、API 密钥等),因此它们被排除在代码版本控制系统之外,以保护这些敏感数据 。
.env 文件使用键值对的格式,每一行都是一个环境变量的定义 。例如:
DB_HOST=localhostDB_USER=rootDB_PASSWORD=123456API_KEY=abcdef123456在 Node.js 中有一个 process全局变量,其中的env属性可以访问系统中的环境变量 。
在应用中,Node.js 无法自行维护本地环境变量,需要借助第三方库(如dotenv,它是一个零依赖的模块)来加载.env文件,并将其中的环境变量注入到 process.env 对象中 。通过这种方式,可以轻松地从程序中访问这些环境变量,而不需要显式地硬编码它们 。
Node.js 终于原生支持 .env 文件了!

文章插图
要通过 dotenv来加载 .env 文件,需要先安装 dotenv:
npm i -S dotenv以下是使用 dotenv 库加载 .env 文件的示例代码:
require('dotenv').config(); // 加载 .env 文件console.log(process.env.DB_HOST); // 访问环境变量console.log(process.env.API_KEY);这里,dotenv 库的 config() 方法会读取.env文件,并将其中的环境变量加载到 process.env 对象中 。然后,可以通过 process.env 对象访问这些环境变量的值 。
使用 .env 文件的好处是,可以根据不同的环境(开发、测试、预发、生产环境等)设置不同的配置值,而不需要直接修改代码 。这样做可以使应用更加灵活和可移植 。
浏览器环境在 Node.js 环境中,可以使用 process.env 来获取环境变量的值 。但是,在浏览器环境下,process.env 是不可用的,无法直接在浏览器中获取环境变量的值 。
幸运的是,通过使用打包工具,可以将环境变量暴露给浏览器运行时环境 。下面我们来看一下如何在 Vite 和 webpack 中实现这一目标 。
ViteVite 通过 import.meta.env 对象来暴露一组预定义的变量:
  • import.meta.env.MODE:值为 'development' 或 'production' 。
  • import.meta.env.PROD:在生产模式下为 true 。
  • import.meta.env.DEV:在开发模式下为 true 。
  • import.meta.env.SSR:一个布尔值,表示应用是否在服务端运行 。
  • import.meta.env.BASE_URL:基础 URL 。
此外,Vite 还可以从 .env 文件中加载变量 。在内部,Vite 也是使用 dotenv 来实现这一功能 。但不需要手动调用与 dotenv 相关的东西:Vite 会自动完成所有操作 。
例如,如果有一个如下所示的 .env 文件:
VITE_MY_VAR=value那么可以在浏览器中通过 import.meta.env.VITE_MY_VAR 来访问这个值,它的结果将是 'value' 。
注意,Vite 只会公开以 VITE_ 前缀开头的变量(但这可以进行配置) 。
Vite 在如何访问环境变量方面有一个详细的指南:https://cn.vitejs.dev/guide/env-and-mode.html 。
WebpackWebpack 中内置的 EnvironmentPlugin 插件可以用来暴露环境变量 。


推荐阅读