Bun

bun publish

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

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

## Publishing the package from the current working directory
bun publish

## Output
bun publish v1.3.0 (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: https://:4873/

 + publish-1@1.0.0

或者,您可以通过使用 bun pm pack,然后使用指向输出 tarball 的路径和 bun publish 来单独打包和发布您的包。

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

注意 - 如果提供了 tarball 路径,bun publish 将不会运行生命周期脚本(prepublishOnly/prepack/prepare/postpack/publish/postpublish)。脚本仅在包由 bun publish 打包时运行。

--access

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

bun publish --access public

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

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

--tag

设置正在发布的包版本的标签。默认标签是 latest。包的初始版本将始终获得 latest 标签以及指定的标签。

bun publish --tag alpha

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

{
  "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。值范围从 09(默认为 9)。

CLI 用法

$bun publish dist

Flags

发布选项

--access=<val>
为作用域包设置访问级别
--tag=<val>
标记发布。默认是 "latest"
--gzip-level=<val>
指定 gzip 的自定义压缩级别。默认是 9。
--tolerate-republish
在重新发布现有版本号时不要以代码 1 退出

身份验证和安全

--ca=<val>
提供一个证书颁发机构签名证书。
--cafile=<val>
与 `--ca` 相同,但指向证书的文件路径。
--no-verify
跳过验证新下载包的完整性
--trust
添加到项目 package.json 中的 trustedDependencies 并安装包。
--otp=<val>
提供一次性密码进行身份验证
--auth-type=<val>
指定一次性密码身份验证的类型(默认是 'web')

注册表和网络

--registry=<val>
默认使用特定的注册表,覆盖 .npmrc、bunfig.toml 和环境变量。
--network-concurrency=<val>
最大并发网络请求数(默认 48)

依赖管理

-p,--production
不安装 devDependencies
-f,--force
始终从注册表请求最新版本并重新安装所有依赖项
--ignore-scripts
跳过项目 package.json 中的生命周期脚本(依赖项脚本永远不会运行)
--backend=<val>
用于安装依赖项的特定于平台的优化。可能的值:“clonefile”(默认值)、“hardlink”、“symlink”、“copyfile”。
--concurrent-scripts=<val>
生命周期脚本的最大并发作业数(默认 5)
--omit=<val>
从安装中排除 'dev'、'optional' 或 'peer' 依赖项
--linker=<val>
链接器策略(“isolated”或“hoisted”之一)
--cpu=<val>
为可选依赖项覆盖 CPU 架构(例如,x64、arm64、* 表示所有)。
--os=<val>
为可选依赖项覆盖操作系统(例如,linux、darwin、* 表示所有)。

Lockfile 管理

-y,--yarn
写入 yarn.lock 文件 (yarn v1)
--no-save
不更新 package.json 或保存锁定文件
--save
保存到 package.json(默认为 true)
--frozen-lockfile
不允许修改锁定文件
--save-text-lockfile
保存基于文本的锁定文件
--lockfile-only
生成锁定文件而不安装依赖项

Caching

--cache-dir=<val>
从特定目录路径存储和加载缓存数据。
--no-cache
完全忽略清单缓存。

Output & Logging

--silent
不记录任何内容。
--quiet
打包时仅显示 tarball 名称。
--verbose
非常详细的日志记录。
--no-progress
禁用进度条。
--no-summary
不打印摘要。

通用和执行控制

-c,--config=<val>
指定配置文件路径 (bunfig.toml)
--dry-run
不安装任何东西
-g,--global
全局安装
--cwd=<val>
设置特定的 cwd

帮助

-h,--help
打印此帮助菜单

Examples

显示将要发布的文件的列表,而无需实际发布到注册表。
bun publish --dry-run
以公共访问权限发布当前包。
bun publish --access public
使用标签 'next' 发布预先存在的包 tarball。
bun publish --tag next ./path/to/tarball.tgz
重新发布时,不会因覆盖现有版本而失败。
bun publish --tolerate-republish
完整的文档可在 https://bun.net.cn/docs/cli/publish 找到。

--auth-type

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

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

--otp

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

bun publish --otp 123456

注意 - bun publish 尊重 NPM_CONFIG_TOKEN 环境变量,该变量可在 GitHub Actions 或自动化工作流中用于发布。