bun CLI 兼容 Node.js 的软件包管理器,旨在成为一款 npm、yarn 和 pnpm 的优秀替代品。它可以作为一个独立工具,在现有的 Node.js 项目中使用。
bun install
如果你的项目有一个 package.json,bun install 可以帮助你加快工作流程。
提速25倍——在任何 Node.js 项目中从 npm install 切换到 bun install,可以使你的安装速度提高25倍。
要安装项目的所有依赖项:
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 允许特定包的生命周期脚本,请将该包添加到 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 支持 "workspaces"
。有关完整的文档,请参阅 Package manager > Workspaces。
在 package.json 中进行配置。
{
"name": "my-app",
"version": "1.0.0",
"workspaces": ["packages/*"],
"dependencies": {
"preact": "^10.5.13"
}
}
Overrides 和 Resolutions
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 install --frozen-lockfile
有关 Bun 的二进制锁定文件 bun.lockb
的更多信息,请参阅 Lockfile >包管理器。
安装非 npm 包
Bun 支持从 Git、GitHub 和本地或远程托管的代码仓库安装依赖项。有关完整的文档,请参阅Package manager > Git, GitHub, and tarball dependencies。
{
"dependencies": {
"dayjs": "git+https://github.com/iamkun/dayjs.git",
"lodash": "git+ssh://github.com/lodash/lodash.git#4.17.21",
"moment": "git@github.com:moment/moment.git",
"zod": "github:colinhacks/zod",
"react": "https://registry.npmjs.org/react/-/react-18.2.0.tgz"
}
}
bun install 配置
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 中使用 bun install
想要加快您的CI速度?使用官方 oven-sh/setup-bun 操作在 GitHub Actions 管道中安装 bun
。
在 .github/workflows/release.yml 中:
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