跳转到内容

在 Pier 中使用 bun

Bun 的包管理器(bun addbun install)使用标准 npm 仓库协议并读取 .npmrc——与 npm 完全相同。有两个值得关注的点:

  • 缩略版 packument——bun 默认发送 Accept: application/vnd.npm.install-v1+json。Pier 会返回更精简的 JSON 负载(不含 README,不含历史时间戳),使大型包的安装明显更快。
  • 始终发送 bearer。 与 npm 和 pnpm 一样,bun 在每个请求上都发送身份验证——无需 always-auth=true 这类变通方法。
.npmrc
registry=https://YOUR-PIER-HOST/registry/npm/
//YOUR-PIER-HOST/registry/npm/:_authToken=pier_npm_…
always-auth=true

always-auth=true 对 bun 无害。保留它,可以让同一份 .npmrc 在你需要时也适用于 yarn 1。

Terminal window
bun install
bun add left-pad
bun add @your-org/internal-lib
bun add -d typescript # devDependency
Terminal window
bun publish

Bun 从 1.1+ 版本开始支持 bun publish。它使用与所有 npm CLI 相同的传输格式(CouchDB 风格、带 _attachments 的 PUT)。

Bun 没有自己的浏览器登录流程。请对 Pier 使用 npm login --auth-type=web——bun 会读取同一份 .npmrc

Terminal window
npm login --auth-type=web --registry=https://YOUR-PIER-HOST/registry/npm/

缩略版 packument 会剥离安装解析时不需要的字段:

字段完整版缩略版
name
dist-tags
versions[*]完整 manifest仅安装时所需字段
versions[*].dist.{tarball,integrity}
versions[*].readme
versions[*].time
time(历史时间映射)

对于热门包(nextreact 等),缩略版的体积要小 5–10 倍。Pier 两种格式都提供;具体使用哪一种由 Accept 头决定。

bun 版本状态说明
latest (1.x)已在 pier-tests 矩阵中针对当前稳定版测试

如果你需要锁定一致的行为,可通过 packageManager 固定版本:

{
"packageManager": "[email protected]"
}
  • error: not found: <pkg>——上游代理已关闭,且该包未私有发布。请启用代理。
  • error: Failed to authenticate——令牌缺失或已吊销。请签发一个新的。
  • 作用域包出现 error: file not found——@scope/name 的 URL 编码可能被中间代理破坏了。测试原始请求:curl -H "Authorization: Bearer pier_npm_…" https://pier-host/registry/npm/@scope%2Fname——应当返回 packument JSON。