# @earthlink/dotvault 中文文档

规范地址：https://npmcn.com/package/%40earthlink/dotvault/

版本：0\.19\.1
npm 元数据更新时间：2026-11-11T09:41:09.429Z
中文译文更新时间：2026-11-13T03:41:04.115Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40earthlink/dotvault
原文对照：https://npmcn.com/package/%40earthlink/dotvault/?lang=original
项目主页：https://app.dotvault.io/
源码仓库：https://github.com/EarthLinkNetwork/dotvault

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

- 包体积（解压后）：573 kB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20\.9\.0
- 运行依赖：1 个
- 首次发布：2026-08-08T23:50:05.597Z
- 最新版本发布：2026-11-11T09:41:09.212Z
- 近 30 天下载量：7031（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：21（近 12 个月 21 个）

## 中文简介

dotvault – synding.env /.npmrc /.gitconfig 和任何跨越机器和CI/CD的配置文件. 无需AWS账户.

## 安装

```sh
npm install @earthlink/dotvault
```

也可以使用：`pnpm add @earthlink/dotvault`、`yarn add @earthlink/dotvault`、`bun add @earthlink/dotvault`

## README

# @ earthlink/ dotvault

dotvault - 同步 `.env` 编号 : `.npmrc` 编号 : `.gitconfig` 和任意配置文件 计算机和计算机/CD。 无需AWS账户.

[![npm version](https://img.shields.io/npm/v/@earthlink/dotvault)](https://www.npmjs.com/package/@earthlink/dotvault) [![license](https://img.shields.io/npm/l/@earthlink/dotvault)](https://npmcn.com/package/LICENSE)

## 安装

```bash
npm i -g @earthlink/dotvault
# or as a project devDependency
npm i -D @earthlink/dotvault
```

需要节点20.

> 升级自 `@earthlink/env-sync`♪ The `env-sync` 命令继续工作 作为别名——参见: [兼容性别名](https://npmcn.com/package/%40earthlink/dotvault/#readme-compatibility-alias-env-sync) 见下文.

## 快开始

```bash
# 1. Create project-config.json (first time, if not already in repo)
dotvault init

# 2. Log in — stores tokens in OS keychain (Keychain / libsecret / Credential Manager)
dotvault login -e you@example.com

# 3. Pull all synced files to local disk
dotvault pull

# 4. (Optional) Inject secrets into a dev server without writing any file
dotvault run -- npm run dev
```

## 共同工作流程

| 工作流程 | 图标 |
| --- | --- |
| 第一次设置 | `dotvault init` → `dotvault login` → `dotvault pull` |
| 合并已存在的工程( 配置为repo) | `dotvault login` → `dotvault pull` |
| 本地 dev( 磁盘上没有. env) | `dotvault run -- npm run dev` |
| CI/CD(服务代号) | 设定 `DOTVAULT_TOKEN=est_…` → `dotvault pull --env production` |
| 审计历史 | `dotvault versions DATABASE_URL` |
| 倒回一个秘密 | `dotvault rollback DATABASE_URL --to 4` |
| 添加文件以同步 | `dotvault push .npmrc` |
| 侦测犯罪秘密 | `dotvault scan .` |
| 共享一个全局的密钥 | `dotvault global keys` → `dotvault global use <KEY>` |

## 所有命令

```
dotvault init                     # create project-config.json
dotvault login                    # email + password auth (Cognito)
dotvault pull                     # write .env / .npmrc etc. to local disk
dotvault run -- <cmd>             # inject secrets into child process (no file written)
dotvault set KEY=value            # set one or more secrets
dotvault delete KEY               # delete a secret
dotvault import .env.production   # bulk-import from a .env file
dotvault versions KEY             # show version history of a key
dotvault rollback KEY --to N      # restore a key to version N
dotvault list                     # list (env, file) inventory for this project
dotvault push .npmrc              # add any file to the sync set
dotvault files                    # list synced files
dotvault scan .                   # detect committed secrets (offline)
dotvault global keys              # list the org's global key-pool inventory
dotvault global set K=v [-E env]  # set a global-pool value (omit -E for the common value)
dotvault global delete K [-E env] # delete a global-pool value
dotvault global use K [--as N]    # bind a global key into this project's pull
dotvault global drop K            # unbind a global key from this project
dotvault global status            # show this project's active global-key bindings
dotvault project create --name X  # create a project (headless — ADR-0018)
dotvault logout                   # remove tokens from keychain
dotvault whoami                   # report active identity (interactive user OR service token)
```

运行 `dotvault <command> --help` 每个命令的标记和示例.

## 输入选项

```bash
dotvault init [options]
```

| 选项 | 默认 | 说明 |
| --- | --- | --- |
| `-n, --name <name>` | `basename(cwd)` | 项目名称 |
| `--api <url>` | `https://api.dotvault.io/v1` | API 基础 URL |
| `-f, --force` | —— 说 | 覆盖已存在的 `project-config.json` |

**成功输出 :**

```
Created project-config.json (project=my-app). Next: dotvault login && dotvault pull
```

## 拉动选项

```bash
dotvault pull --project my-app --env staging --file .env.local
```

| 选项 | 说明 |
| --- | --- |
| `-p, --project <name>` | 覆盖工程名称 `project-config.json` (使用此旗帜, 配置文件是可选的 —— 见下文) |
| `-E, --env <env>` | `development` | `staging` | `production`,或项目已申报的任何自定义嵌入(Settings-Environments,ADR-0024) |
| `-f, --file <file>` | 只拉这个文件 |

**成功输出(每个文件一行,然后是摘要;颜色/进度栏) 仅限TTY:**

```
✓ Wrote 12 keys to .env.local (project=my-app, env=development, file=env.local). Markers preserved.
✔ 1 file synced, 0 excluded, 12 keys total
```

## 按整个文件

```bash
dotvault push .npmrc [--as config/prod.json] [--env staging]
```

`push` 上传整个文件(例如:. `.npmrc`, (中文(简体) ), `kubeconfig`一个JSON 服务账户密钥)作为同步文物. 一个后来的平地 `dotvault pull` 实现每个被推到它的文件 `destPath`,创建任意 缺少父目录 。 无法写入的文件( 无) 允许,在方法中的一个目录,...)在警告中命名,并且 其他文件仍然被写入.

`dotvault run` 仅在命令时将所推文件放置 运行并随后移除。 如果文件已经存在 `destPath` 内容相同(例如: `pull`这是 继续使用。 如果本地文件不同, 则左边 未触及和 `run` 打印一个警告.

**只有文本文件(UTF-8).** `push` 读取和存储文件为 UTF-8 语句。 一个无效的 UTF-8 — 二进制文件( 图像, 档案, 编译出 blobs)和文本保存在另一个编码中,例如Latin-1或 Shift JIS - 在上传前被否决,同时存在验证错误. 转换 将文件移至 UTF-8, 或 Base64- encode 二进制数据输入文本文件 如果你必须同步它.

**尺寸限制:256KiB.** 服务器拒绝超过 262,144 的文件 字符数( e)`FILE_TOO_LARGE`) (中文(简体) ). 256KiB的ASCII纯文本; 有多字节字符的文本在字节中可以较大. 已按下文件 与每一次拉出, 所以秘密,不是大资产,是 预定有效载荷.

## 扫描已承诺的秘密

```bash
dotvault scan .                   # scan a path tree (offline, no auth)
```

`scan` 沿着给定的路径走( 滑行) `node_modules`),旗帜 高度自信秘密(AWS密钥、私人密钥块、GitHub PATs、, dotvault service service services)并编辑其输出中的匹配值. 退出代码为 **1个** 当任何发现被报告时, **6个** 当一个名称 顶级路径不存在( u)`SCAN_PATH_NOT_FOUND`, (中文(简体) ), **0 个** 当 树是干净的.

**已知的限制(普通任务).** 这个 `generic-assignment` 规则只引用了16+字符的正文(例如:. `password = "supersecretvalue123"`) (中文(简体) ). 故意这样做的 **没有** 旗帜 `"${VAR}"` 插值引用(GitHub #254),为了避免噪音,不 旗帜短或未引用的值, 如平原 `PASSWORD=value` 线条在 (单位:千美元) `.env` 文档. `scan` 是个秘密的绊线,不是详尽无遗的 linter——将干净的结果作为"没有明显的高通密", 不是保证.

## 退出代码

| 退出 | 含义 |
| --- | --- |
| 0 个 | 成绩 |
| 1个 | 请求不当,或 `scan` 发现了可能的秘密 |
| 2个 | 网络出错( E)`NETWORK_ERROR`——API无法到达;可以安全重试 |
| 3个 | 未登录、会话过期或证书错误 / MFA 代码 |
| 页:1 | 拒绝许可( E)`PERMISSION_DENIED`(中文(简体) ) |
| 页:1 | 在服务器上找不到的工程或秘密( E)`PROJECT_NOT_FOUND`(中文(简体) ) |
| 6个 | 无效在此机上的输入( E)`VALIDATION_ERROR`, (中文(简体) ), `SCAN_PATH_NOT_FOUND`(中文(简体) ) |
| 第7条 | `rotate` 冲突(409起来自旋转路线,例如已经在飞行中的RUN) |
| 99 (韩语) | 意外错误,包括其它服务器响应(例如413,429,5xx) |

`dotvault run` 退出时使用孩子命令的退出代码 (127 当 命令无法启动 .

## 项目配置

CLI读取 `project-config.json` 在工作目录根中(由 `dotvault init`页:1.

有明确的 `-p, --project <name>` 文件为 **选项** (ADR-0035): (英语) 每个工程范围的命令 (`pull`, (中文(简体) ), `run`, (中文(简体) ), `list`, (中文(简体) ), `set`, (中文(简体) ), `push`, (中文(简体) ), `files`, (...) (中文(简体) ) 然后从任意目录中工作。 没有配置 API URL 返回到 `DOTVAULT_API_URL` - 众所周知的缺省,内脏又回到 `--env` → `DOTVAULT_ENV`编号 :`APP_ENV` → `development`命令 (单位:千美元)`set` (例如)要求明确 `--file`没有 `--project` 配置 需要保留 —— 将目录固定在项目上 :

```json
{
  "name": "my-app",
  "setup": {
    "bootstrap": {
      "proxy": {
        "apiUrl": "https://api.dotvault.io/v1"
      }
    },
    "envSync": {
      "enabled": true,
      "files": [".env"],
      "defaultEnv": "development"
    }
  }
}
```

将此文件提交您的仓库—— 它不包含任何秘密 。 这个 `apiUrl` 字段是唯一必须匹配主机平台的值.

## 认证

用于每次引用的CLI(适用于 `pull`, (中文(简体) ), `run`, (中文(简体) ), `set`, (中文(简体) ), `delete`, (中文(简体) ), `import`, (中文(简体) ), `versions`, (中文(简体) ), `rollback`, (中文(简体) ), `list`, (中文(简体) ), `push`, (中文(简体) ), `files`, (中文(简体) ), `whoami`:

1.  `DOTVAULT_TOKEN` 环境变量(或遗产) `ENV_SYNC_TOKEN`(b) —— `est_…` 服务标志(CI/CD/Lambda)
2.  OS 键链——由 `dotvault login` (交互式用户)

`dotvault whoami` 将会在不进行网络呼叫的情况下告诉你哪个模式是活动的 :

```bash
$ DOTVAULT_TOKEN=est_ci_secret_abcdefghij dotvault whoami
Service token (DOTVAULT_TOKEN=est_ci_secre…) — CI / Lambda mode

$ dotvault whoami
you@example.com (session valid until 2027-10-24)
```

### 服务标志——仅管理控制台

服务信使( O)`est_…`)在管理员控制台中创建、列出并被撤销: [app.dotvault.io/admin/托盘](https://app.dotvault.io/admin/tokens)。这个秘密 显示一次——立即保存.

`dotvault token list | create | revoke` 在v0.15.6中被删除: 符号 API 只接受管理员控制器会话(拒绝CLI登录),所以 命令总是失败 `PERMISSION_DENIED`他们现在只打印 控制台 URL 并退出 1 .

### 无头项目创建( I)`dotvault project create`(中文(简体) )

创建一个没有管理员网络控制台的工程——让克洛德完成的作品 代码/CI载入无人驾驶的回放(ADR-0018)。 薄荷a `provisioner` 曾经, 然后创建没有交互式登录的工程 :

```bash
# one-time (org admin): create a `provisioner` token in the admin console
# (https://app.dotvault.io/admin/tokens) — it creates projects, cannot read or
# write any secret, and cannot mint tokens

# thereafter (headless): org is taken from the token, so --org is optional
DOTVAULT_ADMIN_TOKEN=est_… dotvault project create --name myapp
```

全权证书 `project create`数字 : `DOTVAULT_ADMIN_TOKEN` (或遗产) `ENV_SYNC_ADMIN_TOKEN`页:1 `DOTVAULT_TOKEN` (或遗产) `ENV_SYNC_TOKEN`A级 `dotvault login` 会话不能 创建工程——没有提供符符,在管理控制台中创建. 见 [Claude 代码登入运行簿](https://github.com/EarthLinkNetwork/dotvault/blob/main/docs/runbooks/claude-code-onboarding.md)。 。 。 .

## 兼容性别名( C)`env-sync`(中文(简体) )

软件包仍然安装 `env-sync` 二进制并列 `dotvault` ——每个 命令在两个名称下都相同。 通过 `env-sync` 打印一行标准通知:

```
env-sync is now dotvault — the env-sync command keeps working as an alias.
```

遗产 `ENV_SYNC_*` 环境变量(`ENV_SYNC_TOKEN`, (中文(简体) ), `ENV_SYNC_ADMIN_TOKEN`, (中文(简体) ), `ENV_SYNC_API_URL`当 相应的 `DOTVAULT_*` 变量未设置 – 没有强制 移民期限.

## 链接

-   管理控制台 : [https://app.dotvault.io (英语)](https://app.dotvault.io/)
-   帮助 FAQ : [https://app.dotvault.io/admin/ help (英语)](https://app.dotvault.io/admin/help)
-   完整文档: [https://github.com/EarthLinkNetwork/dotvault#readme (中文(简体) )](https://github.com/EarthLinkNetwork/dotvault#readme)
-   资料来源: [https://github.com/EarthLinkNetwork/dotvault 互联网档案馆的存檔,存档日期2013-12-21](https://github.com/EarthLinkNetwork/dotvault)

## 访问

Lambda代理后端由EarthLink Network运营. 在操作员的用户池中如果没有一个认知账户,你就不能获取秘密——这个包是故意在npm上分配的,但在业务上是私人的.

## 许可证

麻省理工学院

## 常见问题

### @earthlink/dotvault 是什么？

dotvault – synding\.env /\.npmrc /\.gitconfig 和任何跨越机器和CI/CD的配置文件\. 无需AWS账户\.

### 如何安装 @earthlink/dotvault？

在项目目录运行 npm install @earthlink/dotvault，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 dotvault、env-sync，可以用 npx dotvault 直接运行。

### @earthlink/dotvault 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/earthlink\_\_dotvault 是否存在。

### @earthlink/dotvault 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @earthlink/dotvault 需要什么版本的 Node\.js？

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

### @earthlink/dotvault 可以商用吗？

@earthlink/dotvault 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @earthlink/dotvault 的下载量有多少？

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

### @earthlink/dotvault 还在维护吗？

最新版本 0\.19\.1 发布于 2026/11/11（2 天前）；至今共发布 21 个版本，其中过去 12 个月发布了 21 个；首次发布于 2026/08/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

