当前位置: 首页 > news >正文

Bun 私有包管理上手:一份 bunfig.toml 配好私有源,安装不再 401

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.jsontrustedDependencies
  • monorepo 里多个包依赖同一库的不同版本时,用package.jsonoverrides统一钉住版本;
  • 内网/离线场景:bun pm cache查看缓存目录,缓存补齐后bun install --offline可以完全断网安装,缺依赖时会直接报错而不是卡住。

收尾:今天就能改的两件事

  1. 把团队项目里的 bunfig.toml 按上面格式改好,token 一律走环境变量;
  2. 装完依赖跑一遍bun pm untrustedbun 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),仅供参考

http://www.cnnetsun.cn/news/4288106.html

相关文章:

  • MinerU 文档解析故障排查手册:12 个高频常见问题一次讲清
  • Android Studio项目源码zip解压、Gradle导入与EOCD修复实战指南
  • 研发工程师校招笔试全解析:从网易真题看算法与基础考察
  • turbovec 原理篇(三):Lloyd-Max 量化器如何逼近香农失真-率极限
  • lazygit 快速上手指南:8 个 Git 高频操作如何在一块终端屏里完成
  • 登录日志与管理员审计日志存储决策
  • 保姆级 | Linux 系统命令(tar解压和压缩)
  • Vue3进度条(Progress)
  • 2026年AI论文平台推荐:9款高效AI工具一站式清单
  • DSP算法FPGA实现:从理论到硬件的完整工程链路与实践指南
  • mermaid流程图
  • 千问本地部署实战:从Ollama到Spring AI的完整接入指南
  • 前端工程协作的构建与发布
  • IBASE MI1001 Mini-ITX工业主板:边缘计算与工控替换的可靠之选
  • REDRIVER2:PS1经典游戏《Driver 2》的现代C++重实现与逆向工程解析
  • C++ I/O流与模板编程:从基础原理到实战应用
  • AI+3D人体解剖可视化工具的技术实现与搭建指南
  • 创业产品如何识别价值主张和替代方案
  • 转向系统编程的选型方法
  • ai文章怎么去掉ai痕迹?朱雀AIGC检测后怎样降AI率又保留品牌事实
  • 从自我造题到自我迭代:35B模型如何用数据飞轮逼近万亿参数
  • 皮尔逊相关系数:从原理到实战,避开数据分析中的常见陷阱
  • 第二代Open Virtual Platforms API:从组件化建模到多核虚拟平台实战
  • 【算法】数字滤波
  • 基于TensorFlow与CNN的猫狗识别实战:从环境搭建到模型部署
  • 跨端界面选型看真实页面
  • WinForm应用实战开发指南 - 应用程序如何实现手写签名?
  • 效率工具评审从用户任务出发
  • STM8 I2C BUSY位卡死排查与恢复:从寄存器状态到总线释放方案
  • DV-1100边缘计算工控机选型与部署实战:从车载到产线