# @galadrim/galacrypt 中文文档

规范地址：https://npmcn.com/package/%40galadrim/galacrypt/

版本：2\.4\.0
npm 元数据更新时间：2026-09-10T16:08:00.576Z
中文译文更新时间：2026-11-15T21:24:16.139Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：75.2 kB，45 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-03-12T14:47:52.085Z
- 最新版本发布：2026-09-10T16:07:59.873Z
- 近 30 天下载量：11567（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：15（近 12 个月 2 个）

## 中文简介

以更简单的心理模式和0个依赖性替代转动式管

## 安装

```sh
npm install @galadrim/galacrypt
```

也可以使用：`pnpm add @galadrim/galacrypt`、`yarn add @galadrim/galacrypt`、`bun add @galadrim/galacrypt`

## README

# 高压

以更简单的心理模式和0个依赖性替代转动式管

## 为什么是Galacrypt?

-   推出.env文件只是不适合我(在犯罪前在苍蝇上传送加密/解密.env文件)
-   我认为,承诺.env 增加了一个精神上的指控,即确保转录器在推进你的.env(反直觉动作)前配置良好
-   事实上,我认为 转动的方式 "看起来像一个黑客", 做什么 与你看到的不同: 例如:你可以看到一个清晰的.env,但在git文件中,它是加密的.

**三角洲**:在处理秘密时,我更喜欢WYSIWYG

## Galacrypt是做什么的呢? (美国英语)?

您在配置中定义了一组输入/输出文件

```json
{
  "files": [
    {
      "input": ".env",
      "output": ".env.galacrypt"
    }
  ]
}
```

执行时(或运行时) `yarn galacrypt encrypt`它会使用存储在文件中的 AES 256 密钥加密这些文件 `.galacryptkey`

打开 `git pull`, (中文(简体) ), `git rebase` (或运行时) `yarn galacrypt decrypt`它会解密这些文件

: bulb: 通过这个方法,您会输入自动文件, 但保留输入文件 gignored . 你所看到的加密将被加密,你所看到的清晰文本将保留在清晰文本中(并且应当被 gitignored)

当您在设置 AES 密钥后将工程复制

```bash
yarn galacrypt use <key>
```

您可以通过运行恢复您的文件

```bash
yarn galacrypt decrypt --all
```

## 安装

`yarn add -D @galadrim/galacrypt`

## 设置

### 新建项目的设置

运行 `yarn galacrypt init`

这将做以下工作:

-   将.galacryptkey添加到您的.gitignore
-   创建 galacrypt 密钥, 存储在. galacryptkey (您必须 gitignore this file 并保存密钥到安全的地方, 例如您的密码管理器)
-   创建将运行的预承诺钩 `galacrypt encrypt`
-   创建后重写勾钩( 如: 后) `git rebase`将运行 `galacrypt decrypt`
-   创建后置钩( 如: `git pull`将运行 `galacrypt decrypt`
-   创建 .galacryptrc.json 文件,然后您必须按您的需要编辑它(见下文json示例)

要完成配置, 请添加一些要加密的文件 `.galacryptrc.json` 文件 这里的格式 :

```ts
interface GalacryptConfig {
  files: {
    input: string;
    output: string;
    // keep scrolling to see details about these options
    disableImplicitDecrypt?: boolean;
    mode?: 'file' | '.env';
  }[];
}
```

以及一个例子:

```json
{
  "files": [
    {
      "input": ".env",
      "output": ".env.galacrypt"
    }
  ]
}
```

: 警告: 在离开此页面之前, 请双倍检查输入文件是否在您的 `.gitignore` 文件

### 现有项目的设置

问你的团队要你的项目

然后使用此命令 :

```bash
yarn galacrypt use <key>
```

这将做以下工作:

-   将提供的高压键放入.galacryptkey
-   创建将运行的预承诺钩 `galacrypt encrypt`
-   创建后重写钩(例如. `git rebase`将运行 `galacrypt decrypt`
-   创建后相接钩( 如. `git pull`将运行 `galacrypt decrypt`

### 软件包管理器配置

默认情况下, Galacrypt 使用 `yarn` {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}去开钩子 您可以在运行时使用下列标记之一来覆盖此行为 `galacrypt init` 或者说 `galacrypt use <key>`数字 :

-   `--yarn`: 使用 `yarn` (默认)
-   `--pnpm`: 使用 `pnpm`
-   `--npm`: 使用 `npm`
-   `--bun`: 使用 `bun`
-   `--package-manager <command>`: 使用自定义软件包管理器命令

**示例**

```bash
# Using pnpm
galacrypt init --pnpm

# Using a custom command
galacrypt use <key> --package-manager "deno"
```

## 使用量

```bash
# to setup galacrypt on a new project (will generate a new AES 256 key)
yarn galacrypt init
# to setup galacrypt on an existing project
yarn galacrypt use <key>
# to encrypt input files set in .galacryptrc.json to their output versions
yarn galacrypt encrypt
# to decrypt output files set in .galacryptrc.json to their input versions
# note that it won't decrypt files with `disableImplicitDecrypt: true`
yarn galacrypt decrypt
# to decrypt all output files set in .galacryptrc.json to their input versions
yarn galacrypt decrypt --all
# to encrypt only some files (coma separated list of input files)
yarn galacrypt encrypt --only .env
# to decrypt only some files (coma separated list of output files)
yarn galacrypt decrypt --only .env.galacrypt
# to git add output files after encryption (used in the pre-commit hook)
yarn galacrypt encrypt --git-add
```

## 页:1

当你将设置另一个使用 git 钩子( 如 husky) 的工具时, 它可能会打破 galacrypt git 钩子配置, 您可以通过运行再次恢复它

```bash
yarn galacrypt use <key>
```

这不应该打破另一个工具的钩子(它会把我们的钩子附在它们身上)

: bulb:您总是可以手动检查您的 git 钩子,您可以通过运行这个来找到它们:

```bash
git config core.hooksPath
```

如果这回不来,你就会被勾住 `.git/hooks`

## 禁用非法解析选项

想象一下你有这样的配置:

```json
{
  "files": [
    {
      "input": ".env",
      "output": ".env.galacrypt"
    },
    {
      "input": ".env.staging",
      "output": ".env.staging.galacrypt"
    }
  ]
}
```

`.env` 将会是您开发所需的本地嵌入变量, 每个开发者可能使用这个文件的细微不同的版本

如果两个devs, **鲍勃** 财务报告和审定财务报表 **爱丽丝** 爱丽丝修改了她 `.env` 文件并按下更新 `.env.galacrypt` 文件

当鲍勃 `git pull` 或者说 `git rebase` 找回爱丽丝所做的改变, `galacrypt decrypt` 他将会失去自己的版本 `.env` 文件

对外部配置来说是这样的 `.env.staging` 但对于本地配置, 可能与开发者不同

这里 `disableImplicitDecrypt` 可使用,见下文更新的配置:

```json
{
  "files": [
    {
      "input": ".env",
      "output": ".env.galacrypt",
      "disableImplicitDecrypt": true
    },
    {
      "input": ".env.staging",
      "output": ".env.staging.galacrypt"
    }
  ]
}
```

`disableImplicitDecrypt` 通知 galacrypt 绝不隐含地解密此文件, 意思是当你运行时 `galacrypt decrypt` (例如当你 `git pull` 或者说 `git rebase` 以获取其它 devs 的代码) 它不会解密 `.env.galacrypt` 页:1 `.env`

: bulb: 您总是可以通过运行强制解密 `galacrypt decrypt --all` 或者说 `galacrypt decrypt --only path/to/output/file`

: bulb : 当你在工程上着陆时, 您将想要解密所有文件, 包括注意的文件 `disableImplicitDecrypt`,这就是为什么 `--all` 选项存在 :

```bash
yarn galacrypt decrypt --all
```

## 模式选项

默认( E)`"mode": "file"`) galacrypt 加密该 **整体** 输入文件为单个 blob . 这是对二进制的,但它有一个缺点 `.env` 文件: 更改一个 变量重写整个blob,所以两个开发者触碰同一个文件最终总是与 一场无法解决的冲突.

这个 `.env` 模式加密 **只有数值**,并将可变名称置于清晰的文本中:

```json
{
  "files": [
    {
      "input": ".env.staging",
      "output": ".env.staging.galacrypt",
      "mode": ".env"
    }
  ]
}
```

拿着这个 `.env.staging` 文件 :

```bash
# staging config
DB_HOST=db.staging.internal
DB_PASSWORD=hunter2

export API_TOKEN="tok en"
```

`yarn galacrypt encrypt` 现在逐行生成一条线 `.env.staging.galacrypt`数字 :

```bash
# generated by Galacrypt, do not edit manually
# galacrypt: v=1 mode=.env eof=lf
#galacrypt:0d2f5c0fa97a1df7f69f23184f8fee32:6167d0c1ba86bad7143a2345832120e2eb910ae5161bedb1fbe8e2a79e8d49c9
DB_HOST=1461c1820260c5af26300fc2fd42b454:0aa330b7ac483f1b89c2a8d7d0c48dbf9758779be868f6a21354dc4b78662004
DB_PASSWORD=97bc23dd017b86464a6c776297a01e10:c8a9ec345c305db9d37b893c3bab0dd5

export API_TOKEN=7a6400017e37ae819674e43b2fbbfb82:28eef2f065f96b3f01aadaaccec1edd2
# end
```

你的一行话 `.env` 是加密文件的一行, 所以 :

-   更改加密文件中的一行变量
-   若为 **爱丽丝** 变动 `DB_PASSWORD` 时 **鲍勃** 添加新变量, git 合并两种, 不包含 任何冲突
-   当真的存在冲突时( 两者都更改了相同的变量), 它都是普通的一行 您可以在编辑器中解决的冲突

评论和空白行被保留,但评论的内容被加密,以便 您留下的注释未以清晰的文本发布 。 不为一行 `KEY=value` 配对是加密整组。 数行引用的值( 例如 PEM 私人密钥) 是 支持并恢复原样.

: bulb: 您可以将已有文件切换到 `.env` 模式,只要添加选项和 运行 `yarn galacrypt encrypt`。去除选项后,以同样的方式切换。 解密 检测文件本身的格式,而不是配置的模式,所以一个在之前拉动的队友 已重新加密的文件永远不会被屏蔽, 无论是哪个方向 .

: 警告: 在启用前 `.env` 模式,确保工程的每个开发者运行 暴风雨 **2.4.0 (中文(简体) )** 或稍后: 旧版本无法读取该格式加密的文件.

### 这是什么 `.env` 模式显示

这种模式的要点是交换一些可合并文件的保密性. 任何人谁可以 读取您的仓库查看 :

-   变量的名称 `export` 前缀和缩进
-   有多少变量,评论和空白行的位置
-   **是否为** 一个在两个承诺之间更改的指定值(加密是决定性的,所以 不变的值保持完全相同的加密文本). 价值本身是保密的.

: 警告: 如果变量名称本身敏感, 请保留默认 `file` 模式.

这个 `.env` 模式只支持 UTF-8 文本文件。 二进制(和任何你宁愿保留的东西) 完全不透明)必须留在 `file` 模式.

## 常见问题

### @galadrim/galacrypt 是什么？

以更简单的心理模式和0个依赖性替代转动式管

### 如何安装 @galadrim/galacrypt？

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

### @galadrim/galacrypt 支持 TypeScript 吗？

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

### @galadrim/galacrypt 支持 ESM 还是 CommonJS？

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

### @galadrim/galacrypt 可以商用吗？

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

### @galadrim/galacrypt 的下载量有多少？

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

### @galadrim/galacrypt 还在维护吗？

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

