@galadrim/galacrypt

中文文档
2.4.0发布于 2026/09/11MITTypeScriptES Module零依赖近 30 天下载 1.2万

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

中文使用文档
文档目录12 节
  1. 为什么是Galacrypt?
  2. Galacrypt是做什么的呢? (美国英语)?
  3. 安装
  4. 设置
  5. 新建项目的设置
  6. 现有项目的设置
  7. 软件包管理器配置
  8. 使用量
  9. 页:1
  10. 禁用非法解析选项
  11. 模式选项
  12. 这是什么 .env 模式显示

高压

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

为什么是Galacrypt?

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

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

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

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

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

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

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

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

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

yarn galacrypt use <key>

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

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 文件 这里的格式 :

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

以及一个例子:

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

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

现有项目的设置

问你的团队要你的项目

然后使用此命令 :

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>: 使用自定义软件包管理器命令

示例

# Using pnpm
galacrypt init --pnpm

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

使用量

# 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 钩子配置, 您可以通过运行再次恢复它

yarn galacrypt use <key>

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

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

git config core.hooksPath

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

禁用非法解析选项

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

{
  "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 可使用,见下文更新的配置:

{
  "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 选项存在 :

yarn galacrypt decrypt --all

模式选项

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

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

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

拿着这个 .env.staging 文件 :

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

export API_TOKEN="tok en"

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

# 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 共发布 15 个版本,首次发布于 2024/03/12;过去 12 个月发布了 2 个版本。

版本发布日期距今
2.4.0latest2026/09/112 个月前
2.3.02025/11/1911 个月前
2.2.12025/08/011.3 年前
2.2.02025/07/291.3 年前
2.1.02025/07/281.3 年前
2.0.02024/05/022 年前

关于 @galadrim/galacrypt 的常见问题

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