import Publish from "/snippets/cli/publish.mdx";
bun publish 會自動將你的包打包成 tarball,從 package.json 中剝離 catalog 和 workspace 協議(必要時解析版本),並發布到配置文件中指定的注冊表。支持 bunfig.toml 和 .npmrc 文件。
## 從當前工作目錄發布包
bun publishbun publish v1.3.3 (ca7428e9)
packed 203B package.json
packed 224B README.md
packed 30B index.ts
packed 0.64KB tsconfig.json
Total files: 4
Shasum: 79e2b4377b63f4de38dc7ea6e5e9dbee08311a69
Integrity: sha512-6QSNlDdSwyG/+[...]X6wXHriDWr6fA==
Unpacked size: 1.1KB
Packed size: 0.76KB
Tag: latest
Access: default
Registry: http://localhost:4873/
+ publish-1@1.0.0或者,你可以使用 bun pm pack 後跟 bun publish 和輸出 tarball 的路徑來分別打包和發布你的包。
bun pm pack
...
bun publish ./package.tgzNOTE
如果提供了 tarball 路徑,`bun publish` 將不會運行生命周期腳本(`prepublishOnly/prepack/prepare/postpack/publish/postpublish`)。只有當包由 `bun publish` 打包時才會運行腳本。--access
--access 標志可用於設置要發布的包的訪問級別。訪問級別可以是 public 或 restricted 之一。非作用域包始終是公開的,嘗試使用 --access restricted 發布非作用域包將導致錯誤。
bun publish --access public--access 也可以在 package.json 的 publishConfig 字段中設置。
{
"publishConfig": {
"access": "restricted"
}
}--tag
設置要發布的包版本的標簽。默認情況下,標簽是 latest。包的初始版本始終會被賦予 latest 標簽以及指定的標簽。
bun publish --tag alpha--tag 也可以在 package.json 的 publishConfig 字段中設置。
{
"publishConfig": {
"tag": "next"
}
}--dry-run
--dry-run 標志可用於模擬發布過程,而無需實際發布包。這對於驗證已發布包的內容而無需實際發布包非常有用。
bun publish --dry-run--tolerate-republish
如果包版本已存在,則以代碼 0 退出而不是 1。在 CI/CD 中非常有用,因為作業可能會重新運行。
bun publish --tolerate-republish--gzip-level
指定打包包時使用的 gzip 壓縮級別。僅適用於不帶 tarball 路徑參數的 bun publish。值范圍從 0 到 9(默認為 9)。
--auth-type
如果你為 npm 賬戶啟用了 2FA,bun publish 將提示你輸入一次性密碼。這可以通過瀏覽器或 CLI 完成。--auth-type 標志可用於告訴 npm 注冊表你更喜歡哪種方法。可能的值是 web 和 legacy,默認為 web。
bun publish --auth-type legacy
...
This operation requires a one-time password.
Enter OTP: 123456
...--otp
直接向 CLI 提供一次性密碼。如果密碼有效,這將在發布前跳過額外的一次性密碼提示。示例用法:
bun publish --otp 123456NOTE
`bun publish` 尊重 `NPM_CONFIG_TOKEN` 環境變量,該變量可在 GitHub Actions 或自動化工作流中發布時使用。