Bun

全局缓存

从注册表中下载的所有软件包都存储在一个全局缓存中,路径为 ~/.bun/install/cache,或者由环境变量 BUN_INSTALL_CACHE_DIR 定义的路径。它们存储在名为 ${name}@${version} 的子目录中,因此可以缓存同一软件包的多个版本。

配置缓存行为 (bunfig.toml)

最小化重复下载

Bun 致力于避免多次重新下载软件包。在安装软件包时,如果缓存中已包含 package.json 指定范围内的某个版本,Bun 将使用缓存的软件包而不是再次下载。

安装详情

快速复制

一旦软件包下载到缓存中,Bun 仍需要将这些文件复制到 node_modules。Bun 使用可用的最快系统调用来执行此任务。在 Linux 上,它使用硬链接;在 macOS 上,它使用 clonefile

节省磁盘空间

由于 Bun 在 Linux 和 Windows 上使用硬链接将模块“复制”到项目的 node_modules 目录,因此软件包的内容在磁盘上只存在一个位置,大大减少了分配给 node_modules 的磁盘空间。

此优势也适用于 macOS,但存在例外。它使用 clonefile,这是写时复制的,意味着它不会占用磁盘空间,但会计入驱动器的限制。如果有人尝试修改 node_modules/*,此行为会很有用,因此不可能影响其他安装。

安装策略