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 或自动化工作流中发布时使用。