bun
CLI 包含一个与 Node.js 兼容的包管理器,旨在作为 npm
、yarn
和 pnpm
的速度极快的替代品。这是一个独立的工具,可以在已有的 Node.js 项目中工作;如果你的项目有 package.json
,bun install
可以帮助你加速你的工作流程。
⚡️ 快 25 倍 — 在任何 Node.js 项目中从 npm install
切换到 bun install
,让你的安装速度提升至 25 倍。
适用于 Linux 用户
要安装项目的全部依赖项
bun install
运行 bun install
将
- 安装全部
dependencies
、devDependencies
和optionalDependencies
。Bun 将默认安装peerDependencies
。 - 运行项目的
{pre|post}install
和{pre|post}prepare
脚本(在适当的时候)。出于安全原因,Bun 不会执行 已安装依赖项的生命周期脚本。 - 写入一个
bun.lockb
锁定文件到项目根目录。
日志记录
要修改日志记录详细程度
bun install --verbose # debug logging
bun install --silent # no logging
生命周期脚本
与其他 npm 客户端不同,Bun 不会执行已安装依赖项的任意生命周期脚本,例如 postinstall
。执行任意脚本会带来潜在的安全风险。
要告诉 Bun 允许特定包的生命周期脚本,请将该包添加到 package.json 中的 trustedDependencies
。
{
"name": "my-app",
"version": "1.0.0",
"trustedDependencies": ["my-trusted-package"]
}
然后重新安装该包。Bun 将读取此字段并运行 my-trusted-package
的生命周期脚本。
生命周期脚本将在安装期间并行运行。要调整并发脚本的最大数量,请使用 --concurrent-scripts
标志。默认值为报告的 CPU 计数或 GOMAXPROCS 的两倍。
bun install --concurrent-scripts 5
工作区
Bun 支持 package.json 中的 "workspaces"
。有关完整文档,请参阅 包管理器 > 工作区。
{
"name": "my-app",
"version": "1.0.0",
"workspaces": ["packages/*"],
"dependencies": {
"preact": "^10.5.13"
}
}
覆盖和解析
Bun 支持 package.json 中 npm 的 "overrides"
和 Yarn 的 "resolutions"
。这些是指定元依赖项(依赖项的依赖项)版本范围的机制。有关完整文档,请参阅 包管理器 > 覆盖和解析。
{
"name": "my-app",
"dependencies": {
"foo": "^2.0.0"
},
"overrides": {
"bar": "~4.4.0"
}
}
全局包
要全局安装包,请使用 -g
/--global
标志。通常用于安装命令行工具。
bun install --global cowsay # or `bun install -g cowsay`
cowsay "Bun!"
______
< Bun! >
------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
生产模式
要在生产模式下安装(即不带 devDependencies
或 optionalDependencies
)
bun install --production
对于可重复安装,请使用 --frozen-lockfile
。这将安装锁定文件中指定的每个包的精确版本。如果你的 package.json
与 bun.lockb
不一致,Bun 将退出并显示错误。锁定文件不会更新。
bun install --frozen-lockfile
有关 Bun 的二进制锁定文件 bun.lockb
的更多信息,请参阅 包管理器 > 锁定文件。
试运行
要执行试运行(即实际上不安装任何内容)
bun install --dry-run
非 npm 依赖项
Bun 支持从 Git、GitHub 以及本地或远程托管的 tarball 安装依赖项。有关完整文档,请参阅 包管理器 > Git、GitHub 和 tarball 依赖项。
{
"dependencies": {
"dayjs": "git+https://github.com/iamkun/dayjs.git",
"lodash": "git+ssh://github.com/lodash/lodash.git#4.17.21",
"moment": "[email protected]:moment/moment.git",
"zod": "github:colinhacks/zod",
"react": "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
}
}
配置
bun install
的默认行为可以在 bunfig.toml
中配置。默认值如下所示。
[install]
# whether to install optionalDependencies
optional = true
# whether to install devDependencies
dev = true
# whether to install peerDependencies
peer = true
# equivalent to `--production` flag
production = false
# equivalent to `--frozen-lockfile` flag
frozenLockfile = false
# equivalent to `--dry-run` flag
dryRun = false
# equivalent to `--concurrent-scripts` flag
concurrentScripts = 16 # (cpu count or GOMAXPROCS) x2
CI/CD
希望加快你的 CI?使用官方 oven-sh/setup-bun
操作在 GitHub Actions 流水线中安装 bun
。
name: bun-types
jobs:
build:
name: build-app
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Install bun
uses: oven-sh/setup-bun@v1
- name: Install dependencies
run: bun install
- name: Build app
run: bun run build