@ dotenvage/ 节点
节点.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
通过从标准位置加载密钥来创建密钥管理器 :
DOTENVAGE_AGE_KEY环境变量AGE_KEY环境变量EKG_AGE_KEY环境变量- OS 键链条目(服务 :
dotenvage或者说DOTENVAGE_KEYCHAIN_SERVICE· ; 账户 :AGE_KEY_NAME或者说{CARGO_PKG_NAME}/dotenvage(中文(简体) ) - 密钥文件在
~/.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支持具有优先级的自动文件层:
.env- 基础配置.env.<ENV>- 具体环境(例如:,.env.production(中文(简体) ).env.<ENV>.<OS>- 特定操作系统(例如,.env.production.linux(中文(简体) ).env.<ENV>.<OS>.<ARCH>- 特定建筑.env.<ENV>.<OS>.<ARCH>.<USER>- 用户特定覆盖.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版本随便你.