news 2026/9/3 13:48:13

bun install:如何快30倍安装依赖?Bun包管理器完全指南(Workspaces、Lockfile与安全审计)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
bun install:如何快30倍安装依赖?Bun包管理器完全指南(Workspaces、Lockfile与安全审计)

bun install:如何快30倍安装依赖?Bun包管理器完全指南(Workspaces、Lockfile与安全审计)

【免费下载链接】bunIncredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one项目地址: https://gitcode.com/GitHub_Trending/bu/bun

bun install是 Bun 内置的包管理器命令,官方基准测试显示它比npm install快最高 30 倍——在任意 Node.js 项目中,只要有package.json,就可以直接用它替代 npm、yarn 或 pnpm 安装依赖。这篇指南面向新手,用最少代码讲清楚三件核心事:Workspaces 单体仓库管理、bun.lock 锁文件最佳实践、以及 bun audit 安全审计,帮你把依赖安装从"等十分钟"变成"等三秒"。

三步上手:bun install 快速安装教程

不需要卸载 npm,bun install 是 Node.js 项目的直接"平替":

bun install react # 安装指定包 bun install react@19.1.1 # 安装指定版本 bun install # 安装 package.json 中全部依赖

一条命令会做三件事(见 docs/pm/cli/install.mdx):

  • 安装dependenciesdevDependenciesoptionalDependencies,并默认自动装peerDependencies(npm 7 以前最容易踩的坑);
  • 运行你项目的preinstall/postinstall脚本,但出于安全考虑,不会运行第三方依赖的任意生命周期脚本;
  • 写入bun.lock锁文件到项目根目录。

生产环境部署时用bun install --production,只装生产依赖、跳过 devDependencies。

为什么快30倍?三大核心秘密

官方文档给出数据:Bun 安装一个大型 monorepo(Remix 项目)在 Linux 上约500ms,比npm install快 28 倍、比yarn快 12 倍、比pnpm快 8 倍(见 docs/pm/workspaces.mdx)。快的原因并不神秘:

  1. 全局缓存 + 零拷贝。所有 npm 包缓存到~/.bun/install/cache/,多个项目复用同一个包时不重复下载;
  2. 平台最优后端。macOS 用clonefile、Linux/Windows 用hardlink硬链接,直接把缓存文件"链接"进node_modules,而非逐字节复制(详见 docs/pm/cli/install.mdx);
  3. 并行原生实现。安装核心用 Rust 编写并高度并行化,tarball 解压、依赖解析同时进行。

想强制指定后端:bun install --backend hardlink

Workspaces 完整指南:Monorepo 依赖管理

bun install 完整支持package.json"workspaces"字段(文档:docs/pm/workspaces.mdx)。典型单体仓库结构:

<root> ├── bun.lock ├── package.json # "workspaces": ["packages/*"] └── packages ├── pkg-a/ └── pkg-b/ # 依赖 pkg-a,用 "workspace:*" 声明

Workspaces 三大好处:

  • 本地互引不下载b依赖a时,Bun 直接把本地packages/a链进node_modules
  • 自动去重提升(hoisting):多个 workspace 共享的依赖提升到根node_modules,省磁盘、避免"依赖地狱";
  • --filter精准安装:只给部分包装依赖,或并行跑多包脚本。
# 安装除 pkg-c 外的所有 workspace 依赖 bun install --filter '!pkg-c' # 按目录筛选 bun install --filter './packages/pkg-a' # 一个命令并行启动 api 和 frontend 的 dev 脚本 bun --filter '*' dev

--filter还支持依赖关系语法,如bun --filter 'web...' build会"按依赖顺序"构建 web 及其依赖的所有包,完整规则见 docs/pm/filter.mdx。

bun.lock 锁文件:可复现安装最佳实践

要不要提交 bun.lock?——要。锁文件保证团队和 CI 装到完全相同的版本。几个实用技巧(文档:docs/pm/lockfile.mdx):

场景命令说明
只生成锁文件不安装bun install --lockfile-only快速校验依赖树
CI 可复现安装bun ci等价--frozen-lockfilepackage.json与锁文件不一致时直接报错
离线/弱网环境bun install --offline只用全局缓存,不联网
验证锁文件不安装bun install --frozen-lockfile --dry-run上线前体检

迁移也几乎是零成本:Bun 检测到没有bun.lock时,会自动迁移package-lock.jsonyarn.lockpnpm-lock.yaml(pnpm 的pnpm-workspace.yaml中 catalog 配置一并迁移),原锁文件保留不动,验证后再手动删除即可。

安全审计:bun audit 一键排查漏洞

bun install 的安全设计有两层。

第一层:默认拦截危险脚本。第三方依赖的postinstall等生命周期脚本默认不执行——这是供应链攻击最常见的入口。确需放行的包,加入package.jsontrustedDependencies白名单,或用bun pm trust <包名>一键信任。

第二层:漏洞审计。在项目根目录运行(文档:docs/pm/cli/audit.mdx):

bun audit # 读取 bun.lock 检查已知漏洞(无需 node_modules) bun audit --audit-level=high # 只看 high 及以上 bun audit --prod # 只查生产依赖 bun audit fix # 自动升级到安全版本并重新安装

bun audit fix会输出修复报告:能修复的自动升级、被上游版本范围卡住的会明确告诉你"被谁的哪个依赖范围挡住了",建议用--latestoverrides处理。

进阶防护:在bunfig.toml里配置minimumReleaseAge(例如 259200 秒 = 3 天),拒绝安装"刚发布"的包,专治恶意包抢注窗口期攻击。

常用辅助命令速查表

日常还会用到这些bun pm工具(文档:docs/pm/cli/pm.mdx):

  • bun pm ls --all:列出所有已安装依赖(含传递依赖);
  • bun why <包名>:查清"到底是谁引入了这个包";
  • bun pm licenses:按 MIT/Apache 等许可证分组列出依赖;
  • bun pm cache rm:清空全局包缓存;
  • bun pm diff react:对比当前锁定版本与最新版到底改了什么。

总结:bun install 新手记忆清单

✅ 有package.json就能用,bun install直替 npm,快最高 30 倍 ✅ Monorepo 用workspaces+--filter精准安装 ✅bun.lock提交进版本库,CI 用bun ci保证可复现 ✅ 安全靠"默认不跑依赖脚本 +bun audit审计 + 最小发布年龄"三道防线

从等待十分钟到等待三秒,bun install 值得成为你依赖安装的默认选项。

【免费下载链接】bunIncredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one项目地址: https://gitcode.com/GitHub_Trending/bu/bun

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 13:47:50

三极管基极-发射极并联电阻的作用与设计实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 13:42:55

3 步跑通 AI 爬虫:Scrapegraph-ai 自然语言爬网页完整入门

3 步跑通 AI 爬虫&#xff1a;Scrapegraph-ai 自然语言爬网页完整入门 【免费下载链接】Scrapegraph-ai Python scraper based on AI 项目地址: https://gitcode.com/GitHub_Trending/sc/Scrapegraph-ai 你写过一批 CSS 选择器&#xff0c;第二天页面改版就全失效吗&…

作者头像 李华
网站建设 2026/9/3 13:38:51

1553B 板卡

介绍1553B 是军用飞机设备间信息传输总线标准&#xff0c;采用指令/响应型通信协议和双冗余设计。传输媒介为屏蔽双绞线&#xff0c;核心组件包括总线控制器&#xff08;BC&#xff09;、远程终端&#xff08;RT&#xff09;和总线监视器&#xff08;BM&#xff09;。标准支持3…

作者头像 李华
网站建设 2026/9/3 13:35:06

基于RAG技术构建个人知识库智能问答系统实践指南

在个人知识管理领域&#xff0c;Obsidian 凭借其本地优先、双向链接和强大的插件生态&#xff0c;已经成为许多开发者和内容创作者的标配工具。然而&#xff0c;随着 AI 大语言模型能力的普及&#xff0c;单纯的知识记录已经不能满足高效检索和智能问答的需求。传统的关键词搜索…

作者头像 李华
网站建设 2026/9/3 13:33:16

游戏MOD入门:从主菜单替换到沉浸式体验设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华