bun prune 会删除 node_modules 中当前 bun.lock 不会安装的所有内容——这些包通常是在切换分支、移除依赖项或使用其他包管理器安装后遗留下来的。使用 isolated linker 时,这还包括 node_modules/.bun 中的过时条目。
它永远不会联系 registry,不会运行 lifecycle scripts,也不会修改 bun.lock 或 package.json。
terminal
node_modules 文件夹中移除的包会在括号中显示文件夹,例如 - [email protected] (packages/app/node_modules)。
--production
同时移除 bun install --production 不会安装的所有内容(即 devDependencies)。这样你就可以使用 dev dependencies 进行构建,并在不包含它们的情况下发布:
--omit=dev、--omit=optional 和 --omit=peer 的工作方式与用于 bun install 时相同。
--dry-run
列出将要移除的内容,但不实际删除任何内容:
terminal
--filter
仅清理所选 workspace 的 node_modules 文件夹(使用与 bun install --filter 相同的模式)。共享位置——根目录下的 node_modules,或使用 isolated linker 时的 node_modules/.bun——也会被清理,但仍被未选中 workspace 需要的内容会保留。
terminal
注意事项
- 始终从 workspace 根目录运行,并涵盖每个 workspace 的
node_modules,即使是在某个 workspace 包内调用也是如此 - 要求
bun.lock与package.json匹配。如果你在上次安装后编辑了依赖项,请先运行bun install - 使用与
bun install相同的 linker。如果node_modules是使用另一个 linker 创建的,bun prune会拒绝运行——请传入匹配的--linker,或运行bun install - 按名称匹配包。版本不正确的包会留给
bun install替换。嵌套副本(node_modules/a/node_modules/b)只有在正确版本已安装到其上方后才会被移除;否则 Bun 会保留它并打印警告 - 永远不会移除 workspace 文件夹、仍在使用的
.bin条目、.cache等点目录、普通文件或node_modules之外的任何内容 - 会移除针对当前
os/cpu禁用的包。传入--os/--cpu可针对其他平台进行清理 - 对经过清理的 monorepo checkout(例如
turbo prune的输出)的工作方式与bun install --frozen-lockfile相同 - 如果任何条目删除失败,其余条目仍会被移除,并且命令以
1退出 - 不支持
--global - 如需清理全局缓存,请改用
bun pm cache rm