Bun 私有包管理上手:一份 bunfig.toml 配好私有源,安装不再 401
【免费下载链接】bunIncredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one项目地址: https://gitcode.com/GitHub_Trending/bu/bun
用 Bun 做私有包管理,核心就是搞清楚一件事:bunfig.toml里哪个配置项决定"这个包从哪个仓库下载、用什么凭证"。这篇文章按"配源 → 配认证 → 验证 → 排坑"的顺序,把私有源从配置到跑通的全过程讲一遍,最后给两条可以直接照做的收尾动作。
在 bunfig.toml 里声明私有源
Bun 的注册表配置全部写在[install]表下。registry设默认源,[install.scopes]按作用域精确覆盖——带@myorg前缀的包走内网源,其余包继续走 npmjs 默认源。
[install] registry = "https://registry.npmjs.org" [install.scopes] myorg = { url = "https://registry.myorg.com/", token = "$npm_token" }配置后运行bun add @myorg/utils,Bun 会只把该作用域的包路由到内网源,其他依赖来源不受影响。
给私有源配认证,别把令牌写死
token 可以直接写在 bunfig.toml 里,但更稳妥的是引用环境变量($变量名写法)。这样 CI 上只需要注入一个 secret,仓库里不出现任何敏感字符串;.npmrc里的//主机/:_authToken凭证 Bun 也认,老项目迁移不用改两份配置。
装一遍验证配置真的生效
先跑bun install --dry-run,只解析不落盘,日志里能看到每个包最终命中的源;确认无误再正式安装,私有包应显示来自内网地址。
bun install --dry-run成功时输出类似@myorg/utils@1.0.0 → https://registry.myorg.com/。如果直接 401,九成是 token 过期,或作用域名写成了带@的键名。
这些坑踩之前先知道
- 🚫
registry必须写在[install]表下,写进[bun]不会生效; - token 用
$npm_token注入,别把真实值提交进仓库; - Bun 默认禁止依赖跑生命周期脚本。装完跑一下
bun pm untrusted列出被拦下的包,确认来源后用bun pm trust <包名>加入package.json的trustedDependencies; - monorepo 里多个包依赖同一库的不同版本时,用
package.json的overrides统一钉住版本; - 内网/离线场景:
bun pm cache查看缓存目录,缓存补齐后bun install --offline可以完全断网安装,缺依赖时会直接报错而不是卡住。
收尾:今天就能改的两件事
- 把团队项目里的 bunfig.toml 按上面格式改好,token 一律走环境变量;
- 装完依赖跑一遍
bun pm untrusted和bun pm trust,确认脚本信任名单;CI 里加--frozen-lockfile --prefer-offline,让每次安装可复现且不依赖外网。
具体字段和更多安装选项,可参考仓库内的 bunfig 配置说明、bun install 文档 和 bun pm 子命令。
【免费下载链接】bunIncredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one项目地址: https://gitcode.com/GitHub_Trending/bu/bun
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考