Skip to main content
bunxbun x 的别名。当你安装 bun 时,bunx CLI 将自动安装。
使用 bunxnpm 自动安装并运行包。它是 Bun 的 npxyarn dlx 等价物。
terminal
bunx cowsay "Hello world!"
⚡️ 速度 — 使用 Bun 的快速启动时间,对于本地安装的包,bunx 大约比 npx 快 100 倍
包可以在其 [package.json] 的 "bin" 字段中声明可执行文件。这些被称为_包可执行文件_或_包二进制文件_。
package.json
{
  // ... 其他字段
  "name": "my-cli",
  "bin": {
    "my-cli": "dist/index.js"
  }
}
这些可执行文件通常是用 shebang 行 标记的普通 JavaScript 文件,以指示应使用哪个程序来执行它们。以下文件表明它应该使用 node 执行。
https://mintcdn.com/teemo/2s-4Z6VdGqiCeBNX/icons/javascript.svg?fit=max&auto=format&n=2s-4Z6VdGqiCeBNX&q=85&s=f214c10aa11d8f0f585845867937d9fddist/index.js
#!/usr/bin/env node

console.log("Hello world!");
这些可执行文件可以用 bunx 运行,
terminal
bunx my-cli
npx 一样,bunx 首先会检查本地安装的包,然后回退到从 npm 自动安装包。已安装的包将存储在 Bun 的全局缓存中以供将来使用。

参数和标志

要将附加的命令行标志和参数传递给可执行文件,请将它们放在可执行文件名称之后。
terminal
bunx my-cli --foo bar

Shebangs

默认情况下,Bun 尊重 shebang。如果可执行文件标记为 #!/usr/bin/env node,Bun 将启动一个 node 进程来执行该文件。但是,在某些情况下,即使可执行文件另有指示,也可能希望使用 Bun 的运行时来运行可执行文件。为此,请包含 --bun 标志。
terminal
bunx --bun my-cli
--bun 标志必须出现在可执行文件名称_之前_。出现在名称_之后_的标志将传递给可执行文件。
terminal
bunx --bun my-cli # 好
bunx my-cli --bun # 坏

包标志

--package <pkg>-p <pkg> - 从特定包运行二进制文件。当二进制文件名与包名不同时很有用:
terminal
bunx -p renovate renovate-config-validator
bunx --package @angular/cli ng
要强制 bun 始终与脚本一起使用,请使用 shebang。
https://mintcdn.com/teemo/2s-4Z6VdGqiCeBNX/icons/javascript.svg?fit=max&auto=format&n=2s-4Z6VdGqiCeBNX&q=85&s=f214c10aa11d8f0f585845867937d9fddist/index.js
#!/usr/bin/env bun

用法

bunx [flags] <package>[@version] [flags and arguments for the package]
执行一个 npm 包可执行文件(CLI),如果在 node_modules 中未安装,则自动安装到全局共享缓存中。

标志

--bun
boolean
强制命令使用 Bun 而不是 Node.js 运行,即使可执行文件包含 Node shebang(#!/usr/bin/env node
-p, --package
string
指定要安装的包,当二进制名称与包名称不同时
--no-install
boolean
如果包尚未安装,则跳过安装
--verbose
boolean
在安装期间启用详细输出
--silent
boolean
在安装期间抑制输出

示例

terminal
# 运行 Prisma 迁移
bunx prisma migrate

# 使用 Prettier 格式化文件
bunx prettier foo.js

# 运行特定版本的包
bunx uglify-js@3.14.0 app.js

# 当二进制名称与包名称不同时使用 --package
bunx -p @angular/cli ng new my-app

# 强制使用 Bun 而不是 Node.js 运行,即使可执行文件包含 Node shebang
bunx --bun vite dev foo.js