@dotenvage/node

中文文档
0.8.25发布于 2026/11/13MIT OR Apache-2.0TypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 4462

Dotenvage的节点.js绑定 -- Dotenv 有年龄加密

中文使用文档
文档目录22 节
  1. 特征
  2. 安装
  3. 快速启动
  4. 基本用途( 如 dotenv)
  5. 获取变量为对象( 非模拟)
  6. 加密和解密数值
  7. API 参考
  8. JsEnv 导航器
  9. JsSecret 管理器
  10. 工具函数
  11. CLI 使用量
  12. Next.js 一体化
  13. 类型脚本示例
  14. 文件层
  15. 密钥管理
  16. 设置加密密钥
  17. 生成密钥
  18. 与 dotenv 的比较
  19. 所需资源
  20. 来源建筑
  21. 许可证
  22. 链接

@ dotenvage/ 节点

npm version npm downloads License: MIT OR Apache-2.0

节点.js 绑定 点数 - 说吧 多腾夫与 年龄加密。 。 。 .

特征

  • 🔒 加密密码 .env 文件 - 安全地加密 版本控制的秘密
  • 📦 原生业绩 - 与全国反种族主义国家行动研究所-RS一起建造,用于快速拉斯特 业绩
  • 🔄 自动检测 - 自动识别哪个键应 被加密
  • 🌳 文件分层 - 多个 .env* 自动文件 优先级
  • 💻 CLI 支持 - 包括 dotenvage 命令行工具
  • 📝 类型脚本支持 - 包括全部类型脚本定义

安装

npm install @dotenvage/node

快速启动

基本用途( 如 dotenv)

import * as dotenvage from "@dotenvage/node";

// Load encrypted .env files into process.env
const loader = dotenvage.JsEnvLoaderNew();
loader.load(); // Mutates process.env (like dotenv.config())

// Now access variables
const apiKey = process.env.API_KEY;
const dbUrl = process.env.DATABASE_URL;

获取变量为对象( 非模拟)

import * as dotenvage from "@dotenvage/node";

const loader = dotenvage.JsEnvLoaderNew();
const env = loader.getAllVariables(); // Returns Record<string, string>

// Use without modifying process.env
console.log(env.API_KEY);
console.log(env.DATABASE_URL);

加密和解密数值

import * as dotenvage from "@dotenvage/node";

// Generate a new key pair
const manager = dotenvage.JsSecretManagerGenerate();
const publicKey = manager.publicKeyString(); // Share this public key

// Encrypt a secret
const secret = "sk_live_abc123";
const encrypted = manager.encryptValue(secret);
// Returns: "ENC[AGE:b64:...]"

// Decrypt it back
const decrypted = manager.decryptValue(encrypted);
console.log(decrypted === secret); // true

API 参考

JsEnv 导航器

装入和解密 .env 文档.

JsEnvLoaderNew(): JsEnvLoader

创建一个带有默认密管的新加载器.

const loader = dotenvage.JsEnvLoaderNew();

load(): void

装入 .env 从当前目录到的文件 process.env。 。 。 .

loader.load(); // Sets variables in process.env

loadFromDir(dir: string): void

装入 .env 来自特定目录的文件.

loader.loadFromDir("./config");

getAllVariableNames(): string[]

从所有已装入的变量名称中获取所有变量名称 .env 文件( 不装入) (将环境纳入环境).

const names = loader.getAllVariableNames();
console.log(names); // ["API_KEY", "DATABASE_URL", ...]

getAllVariables(): Record<string, string>

作为对象获取所有环境变量(已解密)。 说明: 首先将变量加载入进程环境.

const env = loader.getAllVariables();
console.log(env.API_KEY);

resolveEnvPaths(dir: string): string[]

计算要装入的 env 文件路径的命令列表 .

const paths = loader.resolveEnvPaths(".");
console.log(paths); // [".env", ".env.local", ...]

JsSecret 管理器

管理机密的加密和解密.

JsSecretManagerGenerate(): JsSecretManager

生成新的随机加密密钥对 .

const manager = dotenvage.JsSecretManagerGenerate();

JsSecretManagerNew(): JsSecretManager

通过从标准位置加载密钥来创建密钥管理器 :

  1. DOTENVAGE_AGE_KEY 环境变量
  2. AGE_KEY 环境变量
  3. EKG_AGE_KEY 环境变量
  4. OS 键链条目(服务 : dotenvage 或者说 DOTENVAGE_KEYCHAIN_SERVICE· ; 账户 : AGE_KEY_NAME 或者说 {CARGO_PKG_NAME}/dotenvage(中文(简体) )
  5. 密钥文件在 ~/.local/state/dotenvage/dotenvage.key

OS 键链搜索当前使用 :

  • macOS: 键链通过 security
  • Linux/ Unix: 特务通过 secret-tool
  • Windows: 查找返回到文件/env来源( 还没有键链查找); keygen --store os|both 使用 cmdkey
const manager = dotenvage.JsSecretManagerNew();

publicKeyString(): string

获取公钥为字符串( 起始于 age1) (中文(简体) ).

const publicKey = manager.publicKeyString();

encryptValue(plaintext: string): string

加密纯文本值.

const encrypted = manager.encryptValue("secret");

decryptValue(value: string): string

如果加密, 则解密一个值; 否则, 返回时不变 .

const decrypted = manager.decryptValue(encrypted);

isEncrypted(value: string): boolean

检查一个值是否以公认的加密格式存在.

const isEncrypted = manager.isEncrypted("ENC[AGE:b64:...]");

工具函数

shouldEncrypt(key: string): boolean

检查是否应该根据自动检测加密密钥名称 模式.

dotenvage.shouldEncrypt("API_KEY"); // true
dotenvage.shouldEncrypt("PORT"); // false

CLI 使用量

包包括一个 dotenvage CLI 命令 :

npx dotenvage list
npx dotenvage get API_KEY
npx dotenvage dump --export

见 主端口读取器 用于完整的CLI文档.

Next.js 一体化

对于Next.js应用程序,使用专用集成设施:

// In next.config.mjs
import { loadEnv } from "@dotenvage/node/nextjs";
loadEnv();

或使用初始化前的加载器确保环境变量 用于 Edge 运行时( 中间软件) :

{
  "scripts": {
    "dev": "node -r @dotenvage/node/nextjs/preinit node_modules/.bin/next dev"
  }
}

见 nextjs/README.md 用于完成下一个.js 融合文献.

类型脚本示例

见 examples/ typeScript 示例目录:

  • load-env.ts - 装入环境变量
  • encrypt-decrypt.ts - 加密和解密
  • app-config.ts - 类型安全应用程序配置
  • auto-encrypt.ts - 自动检测模式
  • nextjs-config.ts - Basic Next.js 使用示例

文件层

dotenvage支持具有优先级的自动文件层:

  1. .env - 基础配置
  2. .env.<ENV> - 具体环境(例如:, .env.production(中文(简体) )
  3. .env.<ENV>.<OS> - 特定操作系统(例如, .env.production.linux(中文(简体) )
  4. .env.<ENV>.<OS>.<ARCH> - 特定建筑
  5. .env.<ENV>.<OS>.<ARCH>.<USER> - 用户特定覆盖
  6. .env.<ENV>.<OS>.<ARCH>.<USER>.<VARIANT> - 特定变式 (例如, .env.production.linux.amd64.alice.docker(中文(简体) )

文件按特定顺序加载 - 更具体文件覆盖 不太特别的 维度值也可以从 已装入的文件( 例如 ), NODE_ENV=production 内 .env 原因 .env.production )),以装入.

密钥管理

设置加密密钥

设置其中一种环境变量 :

export DOTENVAGE_AGE_KEY="AGE-SECRET-KEY-1..."
export AGE_KEY="AGE-SECRET-KEY-1..."
export EKG_AGE_KEY="AGE-SECRET-KEY-1..."

生成密钥

const manager = dotenvage.JsSecretManagerGenerate();
const publicKey = manager.publicKeyString();
console.log(`Public key: ${publicKey}`);
console.log(`Set: export DOTENVAGE_AGE_KEY="<private-key>"`);

或用"CLI":

npx dotenvage keygen

与 dotenv 的比较

特性多腾v@ dotenvage/ 节点
装入 .env 文件✅✅
变异 process.env✅✅
加密机密❌✅
承诺安全下注❌✅
文件分层❌✅
自动检测❌✅
原生业绩❌✅ (Rust)

所需资源

  • 节点.js 18.0.0
  • 有效年龄加密密钥( 通过环境变量或密钥文件设置)

来源建筑

从 npm/ 目录 :

cd npm
npm install
npm run build

或从项目根:

npm run npm:install
npm run npm:build

许可证

版权:"2026 Data Road Inc",美国特拉华州,以莱格拉为交易对象.

许可证根据 麻省理工学院许可证 或 Apache 许可证,2.0版本随便你.

版本与发布记录

@dotenvage/node 共发布 46 个版本,首次发布于 2026/01/11;过去 12 个月发布了 46 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.8.25latest2026/11/13今天
0.8.242026/11/121 天前
0.8.232026/11/112 天前
0.8.222026/11/112 天前
0.8.212026/11/112 天前
0.8.202026/11/103 天前

关于 @dotenvage/node 的常见问题

@dotenvage/node 是什么?

Dotenvage的节点.js绑定 -- Dotenv 有年龄加密

如何安装 @dotenvage/node?

在项目目录运行 npm install @dotenvage/node,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 dotenvage、dotenvage-next,可以用 npx dotenvage 直接运行。

@dotenvage/node 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@dotenvage/node 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@dotenvage/node 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@dotenvage/node 可以商用吗?

@dotenvage/node 使用 MIT OR Apache-2.0 许可。可在 MIT、Apache-2.0 中任选其一遵守。选择 MIT 时,宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@dotenvage/node 的下载量有多少?

根据 npm 官方下载统计,@dotenvage/node 在 2026/10/13 – 2026/11/11 这 30 天内被下载 4,462 次,日均约 149 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@dotenvage/node 还在维护吗?

最新版本 0.8.25 发布于 2026/11/13(今天);至今共发布 46 个版本,其中过去 12 个月发布了 46 个;首次发布于 2026/01/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。