Skip to content

import Bunx from "/snippets/cli/bunx.mdx";

NOTE

`bunx` 是 `bun x` 的别名。安装 `bun` 时会自动安装 `bunx` CLI。

使用 bunx 可以自动安装并运行来自 npm 的包。它相当于 Bun 版本的 npxyarn dlx

bash
bunx cowsay "Hello world!"

NOTE

⚡️ **速度** — 凭借 Bun 的快速启动时间,`bunx` 对于本地安装的包来说,比 `npx` [快大约 100 倍](https://twitter.com/jarredsumner/status/1606163655527059458)。

包可以在其 package.json"bin" 字段中声明可执行文件。这些被称为 包可执行文件包二进制文件

json
{
  // ... 其他字段
  "name": "my-cli",
  "bin": {
    "my-cli": "dist/index.js"
  }
}

这些可执行文件通常是普通的 JavaScript 文件,带有 shebang 行 来指示应该使用哪个程序来执行它们。以下文件表明它应该使用 node 执行。

js
#!/usr/bin/env node

console.log("Hello world!");

这些可执行文件可以使用 bunx 运行,

bash
bunx my-cli

npx 一样,bunx 会先检查本地安装的包,然后回退到从 npm 自动安装包。已安装的包将存储在 Bun 的全局缓存中以供将来使用。

参数和标志

要将其他命令行标志和参数传递给可执行文件,请将它们放在可执行文件名称之后。

bash
bunx my-cli --foo bar

Shebangs

默认情况下,Bun 会遵循 shebangs。如果可执行文件标记为 #!/usr/bin/env node,Bun 将启动一个 node 进程来执行该文件。但是,在某些情况下,可能需要使用 Bun 的运行时来运行可执行文件,即使可执行文件另有指示。为此,请包含 --bun 标志。

bash
bunx --bun my-cli

--bun 标志必须出现在可执行文件名称_之前_。出现在名称_之后_ 的标志将传递给可执行文件。

bash
bunx --bun my-cli # 正确
bunx my-cli --bun # 错误

Package 标志

--package <pkg>-p <pkg> - 从特定包运行二进制文件。当二进制文件名称与包名称不同时很有用:

bash
bunx -p renovate renovate-config-validator
bunx --package @angular/cli ng

要强制脚本始终使用 bun,请使用 shebang。

js
#!/usr/bin/env bun

Bun学习网由www.bunjs.com.cn整理维护