运行时包管理器打包器测试运行器代码检查格式化指南参考博客反馈

bun publish

使用 bun publish 将包发布到 npm 注册表

bun publish 会将你的包打包成 tarball,并从 package.json 中移除 catalog 和 workspace 协议,必要时解析版本。然后,它会发布到配置文件中指定的 registry。支持 bunfig.toml 和 .npmrc 文件。

terminal
## 从当前工作目录发布包
bun publish
Text
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,然后将输出 tarball 的路径传递给 bun publish。

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

--access

--access 用于设置所发布包的访问级别,可以是 public 或 restricted。无作用域的包始终为公开包,使用 --access restricted 发布无作用域包会报错。

terminal
bun publish --access public

你也可以在 package.json 的 publishConfig 字段中设置 --access。

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

--tag

设置所发布包版本的标签。默认标签为 latest。包的初始版本总是会被打上 latest 标签,且会额外打上指定的标签。

terminal
bun publish --tag alpha

你也可以在 package.json 的 publishConfig 字段中设置 --tag。

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

--dry-run

--dry-run 会运行发布流程但不会发布包,因此你可以检查实际会发布哪些内容。

terminal
bun publish --dry-run

--tolerate-republish

如果包版本已存在,使用该标志时退出码为 0 而不是 1。在可能重新运行作业的 CI/CD 场景中很有用。

terminal
bun publish --tolerate-republish

--gzip-level

设置打包包时使用的 gzip 压缩级别,可设为 0 到 9(默认为 9)。仅适用于不带 tarball 路径参数的 bun publish。

--auth-type

如果你的 npm 账户启用了双因素认证,bun publish 会通过浏览器或 CLI 提示你输入一次性密码。--auth-type 用于告诉 npm registry 你偏好的验证方式:web(默认)或 legacy。

terminal
bun publish --auth-type legacy
...
此操作需要一次性密码。
输入 OTP:123456
...

--otp

直接向 CLI 提供一次性密码。如果密码有效,bun publish 会跳过发布前额外的一次性密码提示:

terminal
bun publish --otp 123456

CLI 使用方法

terminal
bun publish dist

发布选项

--accessstring

设置要发布的软件包的访问级别,可以是 public 或 restricted。无作用域的软件包始终是公开的;使用 --access restricted 发布无作用域的软件包会报错。

terminal
bun publish --access public

你也可以在 package.json 的 publishConfig 字段中设置 --access。

package.json
{
  "publishConfig": {
    "access": "restricted" // [!code ++]
  }
}
--tagstringdefault latest

设置发布包的版本标签。默认标签是 latest。包的初始版本始终会获得 latest 标签,此外还会标记指定的标签。

terminal
bun publish --tag alpha

你也可以在 package.json 的 publishConfig 字段中设置 --tag。

package.json
{
  "publishConfig": {
    "tag": "next" // [!code ++]
  }
}
--dry-runboolean

模拟发布过程而不实际发布软件包,以便先验证其内容。

shell
bun publish --dry-run
--tolerate-republishboolean

如果要发布的版本已存在于注册表中,bun publish 将以代码 0 而不是 1 退出。

--gzip-levelstringdefault 9

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

--auth-typestringdefault web

如果你的 npm 账户启用了双因素身份验证(2FA),bun publish 会提示你输入一次性密码,你可以通过浏览器或 CLI 完成验证。--auth-type 用于告知 npm 注册表你偏好的验证方式:web(默认)或 legacy。

terminal
bun publish --auth-type legacy
...
此操作需要一次性密码。
输入 OTP:123456
...
--otpstring

直接向 CLI 提供一次性密码。有效的密码可以跳过发布前额外的一次性密码提示。

terminal
bun publish --otp 123456

注册表配置

自定义注册表

--registrystring

默认使用指定的注册表,覆盖 .npmrc、bunfig.toml 和环境变量。为软件包作用域配置的注册表(在 .npmrc 中设置 @scope:registry=,或在 bunfig.toml 中设置 [install.scopes])仍具有优先级。

bash
bun publish --registry https://my-private-registry.com

SSL 证书

--castring

提供由证书颁发机构(CA)签名的证书

--cafilestring

证书颁发机构证书文件路径

Inline
bun publish --ca "-----BEGIN CERTIFICATE-----..."
Certificate
bun publish --cafile ./ca-cert.pem

常规选项

依赖管理

-p, --productionboolean

不安装 devDependencies

--omitstring

排除依赖类型:dev、optional 或 peer

-f, --forceboolean

始终从注册表请求最新版本并重新安装所有依赖

脚本控制

--ignore-scriptsboolean

打包和发布时跳过生命周期脚本

--trustboolean

将包添加到 trustedDependencies 并运行其脚本

文件管理

--no-saveboolean

不更新 package.json 或锁文件

--frozen-lockfileboolean

禁止更改锁文件

--yarnboolean

生成 yarn.lock 文件(兼容 yarn v1)

性能

--backendstring

平台优化:clonefile(macOS 上的默认值)、hardlink(Linux 和 Windows 上的默认值)、symlink 或 copyfile

--network-concurrencynumberdefault 48

最大并发网络请求数

--concurrent-scriptsnumber

最大并发生命周期脚本数(默认值:CPU 核心数的 2 倍)

输出控制

--silentboolean

禁止所有输出

--verboseboolean

显示详细日志

--no-progressboolean

隐藏进度条

--no-summaryboolean

不打印发布摘要