執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

bunx

執行 npm 包

使用 bunx 來自動安裝並執行來自 npm 的包。它是 Bun 版本的 npx 或 yarn dlx。

terminal
bunx cowsay "Hello world!"

包可以在它們的 package.json 檔案中的 "bin" 欄位宣告執行檔。這些被稱為 包執行檔 或 包二進位制檔案。

package.json
{
  // ... 其他欄位
  "name": "my-cli",
  "bin": {
    "my-cli": "dist/index.js"
  }
}

這些執行檔通常是帶有 shebang 行的純 JavaScript 檔案,其中會指定用於執行它們的程式。以下檔案使用 node 執行。

dist/index.js
#!/usr/bin/env node

console.log("Hello world!");

使用 bunx 執行這些執行檔:

terminal
bunx my-cli

與 npx 一樣,bunx 會先檢查是否已在本地安裝該包,然後再回退到從 npm 自動安裝。bunx 會將已安裝的包儲存在 Bun 的全域性快取中,以供日後使用。

引數和標誌

要向執行檔傳遞額外的命令列標誌和引數,請把它們放在執行檔名之後。

terminal
bunx my-cli --foo bar

Shebang 行

預設情況下,Bun 會遵循 shebang。如果執行檔標記為 #!/usr/bin/env node,Bun 會啟動一個 node 行程來執行該檔案。若要改用 Bun 的執行環境執行執行檔,請傳入 --bun 標誌。

terminal
bunx --bun my-cli

--bun 標誌必須出現在執行檔名稱_之前_。bunx 會將出現在名稱_之後_的標誌傳遞給執行檔。

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 執行,請為其指定一個 bun shebang。

dist/index.js
#!/usr/bin/env bun

使用方法

bash
bunx [flags] <package>[@version] [flags and arguments for the package]

執行 npm 包執行檔(CLI)。如果該包未安裝在 node_modules 中,Bun 會將其安裝到全域性共享快取中。

引數

--bunboolean

強制命令使用 Bun 執行而非 Node.js,即使執行檔包含 Node 的 shebang(#!/usr/bin/env node)

-p, --packagestring

當二進位制名稱與包名不同時,指定要安裝的包

--no-installboolean

如果包尚未安裝,則跳過安裝

--verboseboolean

安裝過程中啟用詳細輸出

--silentboolean

安裝過程中抑制輸出

範例

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