运行 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 的已归一化的 cpu
和 os
值,以及已解析的包。它会跳过在运行时为当前目标禁用包的下载、提取和安装。这意味着即使最终安装的包发生了变化,lockfile 在不同平台/架构之间也不会发生变化。
Bun 的 lockfile 存储什么?
包、这些包的元数据、提升的安装顺序、每个包的依赖项、这些依赖项解析到的包、完整性哈希(如果可用)、每个包解析到的内容以及哪个版本(或等效版本)。
为什么 Bun 的 lockfile 很快?
它对所有数据使用线性数组。包由自动增量整数 ID 或包名称的哈希引用。长于 8 个字符的字符串会进行重复数据删除。在磁盘上保存之前,lockfile 会通过遍历包树并按依赖项顺序克隆包来进行垃圾回收和确定性处理。
我可以选择退出吗?
要在不创建 lockfile 的情况下进行安装
bun install --no-save
要在 bun.lockb
之外安装 Yarn lockfile。
bun install --yarn
[install.lockfile]
# whether to save a non-Bun lockfile alongside bun.lockb
# only "yarn" is supported
print = "yarn"
配置 lockfile