Bun

锁定文件

运行 bun install 将创建一个名为 bun.lockb 的二进制锁定文件。

为什么它是二进制的?

一句话:性能。Bun 的锁定文件保存和加载速度极快,并且保存的数据比锁定文件中的典型数据多得多。

如何检查 Bun 的锁定文件?

运行 bun install -y 以生成一个 Yarn 兼容的 yarn.lock (v1),可以更轻松地检查。

如何 git diff Bun 的锁定文件?

将以下内容添加到本地或全局 .gitattributes 文件中

*.lockb binary diff=lockb

然后使用以下命令将以下内容添加到本地 git 配置中

git config diff.lockb.textconv bun
git config diff.lockb.binary true

或使用 --global 选项将其添加到全局 git 配置(系统范围)中

git config --global diff.lockb.textconv bun
git config --global diff.lockb.binary true

为什么这样做有效

  • textconv 告诉 git 在 diff 之前对文件运行 bun
  • binary 告诉 git 将文件视为二进制文件(因此它不会尝试逐行比较它)

对锁定文件运行 bun 将打印可读的 diff。因此,我们只需要告诉 git 在 diff 锁定文件之前对锁定文件运行 bun 即可。

特定于平台的依赖项?

Bun 在 lockfile 中存储来自 npm 的已归一化的 cpuos 值,以及已解析的包。它会跳过在运行时为当前目标禁用包的下载、提取和安装。这意味着即使最终安装的包发生了变化,lockfile 在不同平台/架构之间也不会发生变化。

Bun 的 lockfile 存储什么?

包、这些包的元数据、提升的安装顺序、每个包的依赖项、这些依赖项解析到的包、完整性哈希(如果可用)、每个包解析到的内容以及哪个版本(或等效版本)。

为什么 Bun 的 lockfile 很快?

它对所有数据使用线性数组。由自动增量整数 ID 或包名称的哈希引用。长于 8 个字符的字符串会进行重复数据删除。在磁盘上保存之前,lockfile 会通过遍历包树并按依赖项顺序克隆包来进行垃圾回收和确定性处理。

我可以选择退出吗?

要在不创建 lockfile 的情况下进行安装

bun install --no-save

要在 bun.lockb之外安装 Yarn lockfile。

CLI 标志
bunfig.toml
CLI 标志
bun install --yarn
bunfig.toml
[install.lockfile]
# whether to save a non-Bun lockfile alongside bun.lockb
# only "yarn" is supported
print = "yarn"

配置 lockfile