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整理維護