bun install 是一个兼容 Node.js 的 npm 客户端,旨在成为极其快速的 npm 继任者。
我们投入了大量工作,确保从 npm install 迁移到 bun install 的路径就像运行 bun install 替代 npm install 一样简单。
- 为 Node.js 和 Bun 设计:
bun install会安装一个兼容 Node.js 的node_modules文件夹。你可以在 Node.js 项目中直接替代npm install使用,无需任何代码更改,也无需使用 Bun 的运行时。 - 自动将
package-lock.json转换为 bun 的锁文件格式bun.lock,保留你现有解析的依赖版本,无需任何手动操作。你可以在公司偷偷用bun install替代npm install,没人会发现。 - 兼容
.npmrc:bun install 会读取 npm 的.npmrc里的 npm registry 配置,因此你可以为 npm 和 Bun 使用同样的配置。 - 硬链接:在 Windows 和 Linux 上,
bun install使用硬链接以节省磁盘空间和缩短安装时间。
terminal
更快地运行 package.json 脚本
运行 package.json 中的脚本,node_modules/.bin 里的可执行文件(类似 npx),以及 JavaScript/TypeScript 文件(就像 node),全部通过一个简单的命令完成。
| NPM | Bun |
|---|---|
npm run <script> | bun <script> |
npm exec <bin> | bun <bin> |
node <file> | bun <file> |
npx <package> | bunx <package> |
bun run <executable> 时,它会选择本地安装的可执行文件。
terminal
支持工作区(Workspaces)
bun install 支持类似 npm 的工作区功能,且拥有更多特性。
在 package.json 中,你可以设置 "workspaces" 为一组相对路径数组。
package.json
按工作区名称筛选脚本
在 Bun 中,--filter 标志接受一个通配符模式,会并行执行命令到所有 name 匹配该模式的工作区包,并遵循依赖顺序。
terminal
更新依赖
要更新依赖,可以使用bun update <package>。该命令会将依赖更新到符合 semver 范围的最新版本。
terminal
查看过期依赖
要查看过期依赖,运行bun outdated。这类似于 npm outdated,但输出更为简洁。
terminal
列出已安装的包
要列出已安装的包,可以使用bun pm ls。这会列出 node_modules 文件夹中安装的所有包,bun 的锁文件作为事实依据。你可以传入 -a 标志来列出所有已安装的依赖,包括传递依赖。
terminal
terminal
创建包的压缩包
要创建包的 tar 压缩包,可以使用bun pm pack。这会在当前目录创建一个包的 tarball。
terminal
Shebang
如果包的 shebang 中引用了node(例如 #!/usr/bin/env node),bun run 默认会尊重它并使用系统的 node 可执行文件。你也可以通过传递 --bun 参数强制使用 Bun 的 node。
当你传入 --bun 给 bun run,我们会在临时目录创建一个指向本地已安装 Bun 可执行文件的 "node" 符号链接,并在脚本执行期间将该目录添加到你的 PATH。
terminal
全局安装
你可以使用bun i -g <package> 全局安装包。默认情况下,这会安装到你用户主目录下的 .bun/install/global/node_modules 文件夹。
terminal