# @dotenvage/node 中文文档

规范地址：https://npmcn.com/package/%40dotenvage/node/

版本：0\.8\.25
npm 元数据更新时间：2026-11-12T23:42:21.875Z
中文译文更新时间：2026-11-12T21:52:24.310Z
软件包许可：MIT OR Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dotenvage/node
原文对照：https://npmcn.com/package/%40dotenvage/node/?lang=original
项目主页：https://github.com/legra-ai/dotenvage#readme
源码仓库：https://github.com/legra-ai/dotenvage

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：8.1 MB，29 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18\.0\.0
- 运行依赖：0 个
- 首次发布：2026-01-11T01:31:13.973Z
- 最新版本发布：2026-11-12T23:42:21.504Z
- 近 30 天下载量：4462（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：46（近 12 个月 46 个）

## 中文简介

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

## 安装

```sh
npm install @dotenvage/node
```

也可以使用：`pnpm add @dotenvage/node`、`yarn add @dotenvage/node`、`bun add @dotenvage/node`

## README

# @ dotenvage/ 节点

[![npm version](https://badge.fury.io/js/%40dotenvage%2Fnode.svg)](https://www.npmjs.com/package/@dotenvage/node) [![npm downloads](https://img.shields.io/npm/dm/@dotenvage/node.svg)](https://www.npmjs.com/package/@dotenvage/node) [![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](https://npmcn.com/package/%40dotenvage/node/LICENSE-MIT)

节点.js 绑定 [点数](https://github.com/legra-ai/dotenvage) - 说吧 **多腾夫与 年龄加密**。 。 。 .

## 特征

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

## 安装

```bash
npm install @dotenvage/node
```

## 快速启动

### 基本用途( 如 dotenv)

```typescript
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;
```

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

```typescript
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);
```

### 加密和解密数值

```typescript
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`

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

```typescript
const loader = dotenvage.JsEnvLoaderNew();
```

#### `load(): void`

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

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

#### `loadFromDir(dir: string): void`

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

```typescript
loader.loadFromDir("./config");
```

#### `getAllVariableNames(): string[]`

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

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

#### `getAllVariables(): Record<string, string>`

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

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

#### `resolveEnvPaths(dir: string): string[]`

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

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

### JsSecret 管理器

管理机密的加密和解密.

#### `JsSecretManagerGenerate(): JsSecretManager`

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

```typescript
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`

```typescript
const manager = dotenvage.JsSecretManagerNew();
```

#### `publicKeyString(): string`

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

```typescript
const publicKey = manager.publicKeyString();
```

#### `encryptValue(plaintext: string): string`

加密纯文本值.

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

#### `decryptValue(value: string): string`

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

```typescript
const decrypted = manager.decryptValue(encrypted);
```

#### `isEncrypted(value: string): boolean`

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

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

### 工具函数

#### `shouldEncrypt(key: string): boolean`

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

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

## CLI 使用量

包包括一个 `dotenvage` CLI 命令 :

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

见 [主端口读取器](https://github.com/legra-ai/dotenvage#usage) 用于完整的CLI文档.

## Next.js 一体化

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

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

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

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

见 [`nextjs/README.md`](https://npmcn.com/package/%40dotenvage/node/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` )),以装入.

## 密钥管理

### 设置加密密钥

设置其中一种环境变量 :

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

### 生成密钥

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

或用"CLI":

```bash
npx dotenvage keygen
```

## 与 dotenv 的比较

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

## 所需资源

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

## 来源建筑

从 `npm/` 目录 :

```bash
cd npm
npm install
npm run build
```

或从项目根:

```bash
npm run npm:install
npm run npm:build
```

## 许可证

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

许可证根据 [麻省理工学院许可证](https://npmcn.com/package/%40dotenvage/node/LICENSE-MIT) 或 [Apache 许可证,2.0版本](https://npmcn.com/package/%40dotenvage/node/LICENSE-APACHE)随便你.

## 链接

-   [GitHub 仓库](https://github.com/legra-ai/dotenvage)
-   [Rust Crate (原始内容存档于2018-09-21) (中文(简体) )](https://crates.io/crates/dotenvage)
-   [粗体文档](https://docs.rs/dotenvage)
-   [主要读取](https://github.com/legra-ai/dotenvage#readme)

## 常见问题

### @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 和提交记录判断。

