Bun

全局缓存

从注册表下载的所有包都存储在 ~/.bun/install/cache 的全局缓存中。它们存储在命名为 ${name}@${version} 的子目录中,因此可以缓存一个包的多个版本。

[install.cache]
# the directory to use for the cache
dir = "~/.bun/install/cache"

# when true, don't load from the global cache.
# Bun may still write to node_modules/.cache
disable = false

# when true, always resolve the latest versions from the registry
disableManifest = false

查看详细信息

最大限度减少重新下载

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

安装详细信息

快速复制

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

节省磁盘空间

由于 Bun 使用硬链接将模块“复制”到 Linux 上项目的 node_modules 目录中,因此包的内容只存在于磁盘上的一个位置,从而大大减少了专用于 node_modules 的磁盘空间量。

此优势也适用于 macOS,但有一些例外。它使用的是 clonefile,它是写时复制,这意味着它不会占用磁盘空间,但它会算作驱动器的限制。如果某些内容尝试修补 node_modules/*,则此行为非常有用,因此不可能影响其他安装。

安装策略