Skip to content

import Publish from "/snippets/cli/publish.mdx";

bun publish 会自动将你的包打包成 tarball,从 package.json 中剥离 catalog 和 workspace 协议(必要时解析版本),并发布到配置文件中指定的注册表。支持 bunfig.toml.npmrc 文件。

sh
## 从当前工作目录发布包
bun publish
txt
bun 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 的路径来分别打包和发布你的包。

sh
bun pm pack
...
bun publish ./package.tgz

NOTE

如果提供了 tarball 路径,`bun publish` 将不会运行生命周期脚本(`prepublishOnly/prepack/prepare/postpack/publish/postpublish`)。只有当包由 `bun publish` 打包时才会运行脚本。

--access

--access 标志可用于设置要发布的包的访问级别。访问级别可以是 publicrestricted 之一。非作用域包始终是公开的,尝试使用 --access restricted 发布非作用域包将导致错误。

sh
bun publish --access public

--access 也可以在 package.jsonpublishConfig 字段中设置。

json
{
  "publishConfig": {
    "access": "restricted"
  }
}

--tag

设置要发布的包版本的标签。默认情况下,标签是 latest。包的初始版本始终会被赋予 latest 标签以及指定的标签。

sh
bun publish --tag alpha

--tag 也可以在 package.jsonpublishConfig 字段中设置。

json
{
  "publishConfig": {
    "tag": "next"
  }
}

--dry-run

--dry-run 标志可用于模拟发布过程,而无需实际发布包。这对于验证已发布包的内容而无需实际发布包非常有用。

sh
bun publish --dry-run

--tolerate-republish

如果包版本已存在,则以代码 0 退出而不是 1。在 CI/CD 中非常有用,因为作业可能会重新运行。

sh
bun publish --tolerate-republish

--gzip-level

指定打包包时使用的 gzip 压缩级别。仅适用于不带 tarball 路径参数的 bun publish。值范围从 09(默认为 9)。

--auth-type

如果你为 npm 账户启用了 2FA,bun publish 将提示你输入一次性密码。这可以通过浏览器或 CLI 完成。--auth-type 标志可用于告诉 npm 注册表你更喜欢哪种方法。可能的值是 weblegacy,默认为 web

sh
bun publish --auth-type legacy
...
This operation requires a one-time password.
Enter OTP: 123456
...

--otp

直接向 CLI 提供一次性密码。如果密码有效,这将在发布前跳过额外的一次性密码提示。示例用法:

sh
bun publish --otp 123456

NOTE

`bun publish` 尊重 `NPM_CONFIG_TOKEN` 环境变量,该变量可在 GitHub Actions 或自动化工作流中发布时使用。

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