bunx 是 bun x 的别名,安装 bun 时自动带上,等价于 bun 生态里的 npx/yarn dlx:自动安装并执行 npm 包中的可执行文件,无需先手动安装。

核心优势

  • 速度:对已在本地安装过的包,启动速度比 npx 快约 100 倍(得益于 bun 本身的快速启动特性)
  • 查找逻辑:与 npx 一致,先查本地 node_modules,找不到就自动从 npm 拉取安装(存入 bun 全局缓存供复用)

基本使用

bunx cowsay "Hello world!"    # 自动安装并执行 cowsay
 
bunx prisma migrate           # 运行 Prisma 迁移
bunx prettier foo.js          # 格式化文件
bunx uglify-js@3.14.0 app.js  # 指定版本执行

包通过 package.json 的 bin 字段声明可执行文件,bunx 执行的就是这些声明的命令。

shebang 处理

默认遵循可执行文件的 shebang。若文件标记 #!/usr/bin/env node,bunx 会拉起一个 node 进程执行;要强制用 bun 运行时执行,加 --bun(必须放在包名之前):

bunx --bun vite dev     # 用 bun 运行时强制执行,即使脚本是 node shebang
bunx vite dev --bun     # 错误用法,--bun 会被当作传给 vite 的参数

常用 flags

flag说明
--bun强制用 bun 运行时执行,忽略 node shebang
-p, --package <pkg>指定要安装的包名,用于二进制名和包名不一致的场景
--no-install本地没有该包时不自动安装
--verbose安装过程输出详细日志
--silent安装过程静默
# 二进制名与包名不同时用 -p 指定
bunx -p @angular/cli ng new my-app
bunx -p renovate renovate-config-validator

命令后面直接跟的参数/flag 会原样传给目标可执行文件:

bunx my-cli --foo bar

与 npx 的关系

bunx 的定位、查找逻辑、“用完自动清理不留全局污染”的哲学与 npx 完全一致,主要差异是启动速度(依赖 bun 运行时本身更快)和调用方式(bunx 本质是 bun x 的快捷别名)。项目已经用 bun 作为包管理器/运行时时,直接用 bunx 替代 npx 即可,无需额外配置。

相关

  • npx — 对应的 npm 生态工具,用法几乎一致
  • README — bunx 所属的完整工具链