Bun

bun publish

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

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

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

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

 + publish-1@1.0.0

或者,你可以使用 bun pm pack 打包你的包,然后使用 bun publish 和输出 tarball 的路径分别打包和发布你的包。

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

--gzip-level

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

CLI 用法

$bun publish dist

标志

配置

-c,--config=<val>
指定配置文件的路径 (bunfig.toml)

依赖管理

-y,--yarn
写入 yarn.lock 文件 (yarn v1)
-p,--production
不安装 devDependencies
--omit=<val>
从安装中排除 'dev'、'optional' 或 'peer' 依赖项

锁定文件管理

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

安全

--ca=<val>
提供证书颁发机构签名证书
--cafile=<val>
与 `--ca` 相同,但它是证书的文件路径

安装行为

--dry-run
不安装任何内容
-f,--force
始终从注册表请求最新版本并重新安装所有依赖项
--ignore-scripts
跳过项目 package.json 中的生命周期脚本(永远不会运行依赖项脚本)
--trust
添加到项目 package.json 中的 trustedDependencies 并安装包
-g,--global
全局安装
--cwd=<val>
设置指定的工作目录 (cwd)
--backend=<val>
平台特定的依赖安装优化。可选值:"clonefile" (默认), "hardlink", "symlink", "copyfile"

缓存

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

日志和输出

--silent
不记录任何日志
--verbose
过度详细的日志记录
--no-progress
禁用进度条
--no-summary
不打印摘要
--no-verify
跳过验证新下载包的完整性

注册表

--registry=<val>
默认使用指定的注册表,覆盖 .npmrc、bunfig.toml 和环境变量

性能

--concurrent-scripts=<val>
生命周期脚本的最大并发作业数 (默认为 5)
--network-concurrency=<val>
最大并发网络请求数 (默认为 48)

帮助和用法

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

发布

--access=<val>
设置作用域包的访问级别
--tag=<val>
标记发布版本。默认为 "latest"
--otp=<val>
为身份验证提供一次性密码
--auth-type=<val>
指定一次性密码验证的类型 (默认为 'web')
--gzip-level=<val>
为 gzip 指定自定义压缩级别。默认为 9。

示例

显示将要发布的文件,但不发布到注册表。
bun publish --dry-run
以公共访问权限发布当前包。
bun publish --access public
使用标签 'next' 发布预先存在的包 tarball。
bun publish --tag next ./path/to/tarball.tgz

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