在 Pier 中使用 bun
Bun 的包管理器(bun add、bun install)使用标准 npm 仓库协议并读取 .npmrc——与 npm 完全相同。有两个值得关注的点:
- 缩略版 packument——bun 默认发送
Accept: application/vnd.npm.install-v1+json。Pier 会返回更精简的 JSON 负载(不含 README,不含历史时间戳),使大型包的安装明显更快。 - 始终发送 bearer。 与 npm 和 pnpm 一样,bun 在每个请求上都发送身份验证——无需
always-auth=true这类变通方法。
registry=https://YOUR-PIER-HOST/registry/npm///YOUR-PIER-HOST/registry/npm/:_authToken=pier_npm_…always-auth=truealways-auth=true 对 bun 无害。保留它,可以让同一份 .npmrc 在你需要时也适用于 yarn 1。
安装 / 添加
Section titled “安装 / 添加”bun installbun add left-padbun add @your-org/internal-libbun add -d typescript # devDependencybun publishBun 从 1.1+ 版本开始支持 bun publish。它使用与所有 npm CLI 相同的传输格式(CouchDB 风格、带 _attachments 的 PUT)。
Bun 没有自己的浏览器登录流程。请对 Pier 使用 npm login --auth-type=web——bun 会读取同一份 .npmrc:
npm login --auth-type=web --registry=https://YOUR-PIER-HOST/registry/npm/缩略版 packument 带来的节省
Section titled “缩略版 packument 带来的节省”缩略版 packument 会剥离安装解析时不需要的字段:
| 字段 | 完整版 | 缩略版 |
|---|---|---|
name | ✓ | ✓ |
dist-tags | ✓ | ✓ |
versions[*] | 完整 manifest | 仅安装时所需字段 |
versions[*].dist.{tarball,integrity} | ✓ | ✓ |
versions[*].readme | ✓ | ✗ |
versions[*].time | ✓ | ✗ |
time(历史时间映射) | ✓ | ✗ |
对于热门包(next、react 等),缩略版的体积要小 5–10 倍。Pier 两种格式都提供;具体使用哪一种由 Accept 头决定。
| bun 版本 | 状态 | 说明 |
|---|---|---|
| latest (1.x) | ✓ | 已在 pier-tests 矩阵中针对当前稳定版测试 |
如果你需要锁定一致的行为,可通过 packageManager 固定版本:
{}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。