Hacker News 中文摘要

RSS订阅

Bun 新增 pnpm 风格的独立安装模式 -- Bun adds pnpm-style isolated installation mode

文章摘要

Dylan Conway在Bun项目中提交了一个Pull Request,旨在在bun install中实现"nodeLinker": "isolated"功能,以支持隔离模式的节点链接器。

文章总结

标题:在 bun install 中实现 "nodeLinker": "isolated" by dylan-conway · Pull Request #20440 · oven-sh/bun

URL 来源:https://github.com/oven-sh/bun/pull/20440

Markdown 内容: 在 bun install 中实现 "nodeLinker": "isolated" by dylan-conway · Pull Request #20440 · oven-sh/bun · GitHub

===============

跳过内容

导航菜单

切换导航

登录

外观设置

探索 * 为什么选择 GitHub * 所有功能 * 文档 * GitHub 技能 * 博客

  • 解决方案

按公司规模 * 企业 * 中小团队 * 初创公司 * 非营利组织

按用例 * DevSecOps * DevOps * CI/CD * 查看所有用例

按行业 * 医疗保健 * 金融服务 * 制造业 * 政府 * 查看所有行业

查看所有解决方案

  • 资源

主题 * AI * DevOps * 安全 * 软件开发 * 查看所有

探索 * 学习路径 * 活动和网络研讨会 * 电子书和白皮书 * 客户故事 * 合作伙伴 * 高管洞察

仓库 * 主题 * 趋势 * 收藏

可用附加组件 * GitHub 高级安全 企业级安全功能 * Copilot for business 企业级 AI 功能 * 高级支持 企业级 24/7 支持

搜索或跳转到...

搜索代码、仓库、用户、问题、拉取请求...

搜索

清除

搜索语法提示

提供反馈

我们阅读每一条反馈,并非常重视您的意见。

  • [x] 包含我的电子邮件地址以便联系

    取消 提交反馈

保存的搜索

使用保存的搜索更快地过滤结果

名称

查询

要查看所有可用的限定符,请参阅我们的文档

取消 创建保存的搜索

登录

注册

外观设置

重置焦点

您已在另一个标签页或窗口中登录。重新加载以刷新会话。您已在另一个标签页或窗口中注销。重新加载以刷新会话。您已在另一个标签页或窗口中切换账户。重新加载以刷新会话。忽略警报

{{ 消息 }}

oven-sh/bun公开

其他导航选项

bun install 中实现 "nodeLinker": "isolated"#20440

新问题

对此项目有疑问吗? 注册一个免费的 GitHub 账户以打开问题并联系其维护者和社区。

注册 GitHub

点击“注册 GitHub”,即表示您同意我们的服务条款隐私声明。我们会偶尔向您发送与账户相关的电子邮件。

已经在 GitHub 上?登录到您的账户

跳到底部

已合并

Jarred-Sumner 将 76 个提交合并到 maindylan/isolated-install2025 年 7 月 9 日

已合并

bun install 中实现 "nodeLinker": "isolated"#20440

Jarred-Sumner 将 76 个提交合并到 maindylan/isolated-install2025 年 7 月 9 日

+6,255 −1,185

对话 26提交 76检查 1更改的文件 99

对话

此文件包含隐藏或双向 Unicode 文本,可能会以不同于下面显示的方式解释或编译。要查看,请在编辑器中打开文件以显示隐藏的 Unicode 字符。了解更多关于双向 Unicode 字符的信息

显示隐藏字符

图片 55: dylan-conway

复制链接

成员

图片 56: @dylan-conwaydylan-conway 评论于 2025 年 6 月 16 日

由 Jarred-Sumner 编辑

加载中

哎呀!

加载时出错。请重新加载此页面。

此 PR 做了什么?

此 PR 在 bun install 中实现了 "nodeLinker": "isolated" 选项,提供了类似 pnpm 的隔离安装模式,防止幻影依赖并支持并行安装包。

主要功能:

  • 在 package.json 中添加对 workspaces.nodeLinker: "isolated" 配置的支持
  • node_modules/.bun/ 目录下以隔离结构安装包
  • 创建从 node_modules/<package>.bun/<package>@<version>/node_modules/<package> 的实际包的符号链接
  • 正确处理作用域包、对等依赖和工作区

目录结构示例:

node_modules/ ├── my-dependency -> .bun/my-dependency@1.0.0/node_modules/my-dependency └── .bun/ ├── my-dependency@1.0.0/ │ └── node_modules/ │ ├── my-dependency/ │ └── sub-dep -> ../../sub-dep@2.0.0/node_modules/sub-dep └── sub-dep@2.0.0/ └── node_modules/ └── sub-dep/

配置: (bunfig.toml)

undefinedtoml [install] linker = "isolated" undefined

关闭#4274

修复#5688

关闭#1760

如何验证代码有效?

测试:

  • 基本单依赖安装
  • 作用域包(例如,@types/*
  • 传递依赖
  • 循环依赖
  • 文件夹依赖
  • 工作区支持
  • 符号链接结构验证

TODO: 更多测试

抱歉,出了点问题。

哎呀!

加载时出错。请重新加载此页面。

❤️12 dargmuesli, NovaBG03, evelant, josefaidt, Sparticuz, anytinz, servusdei2018, cweekly, dsabanin, haxzie, 和 2 更多用爱心表情回应🚀8 dargmuesli, NovaBG03, ashfaqnisar, evelant, josefaidt, dsabanin, haxzie, 和 tengla 用火箭表情回应

所有反应 * ❤️12 反应 * 🚀8 反应

dylan-conway 添加了 14 个提交 2025 年 6 月 9 日 02:48

图片 57: @dylan-conway

解决对等依赖并去重包

1d461a4

图片 58: @dylan-conway

修复构建

f35436b

图片 59: @dylan-conway

将分支 'main' 合并到 dylan/isolated-install

bc92f70

图片 60: @dylan-conway

对等依赖

c4b4511

图片 61: @dylan-conway

将分支 'main' 合并到 dylan/isolated-install

c5204b2

图片 62: @dylan-conway

早期去重

5c43e91

图片 63: @dylan-conway

将分支 'main' 合并到 dylan/isolated-install

25fd992

图片 64: @dylan-conway

将分支 'main' 合并到 dylan/isolated-install

3443ab4

图片 65: @dylan-conway

处理隐式工作区依赖和别名依赖

1346f23

图片 66: @dylan-conway

更好地处理别名包

a405364

图片 67: @dylan-conway

过滤依赖

05364b5

图片 68: @dylan-conway

使用相同的函数进行过滤

243a61b

[![图片 69: @dylan-conway](https://avatars.githubusercontent.com/u/35280289?s=40&v

评论总结

评论内容总结:

  1. Bun的性能与功能改进

    • Jarred提到Bun v1.2.19将发布,修复了Windows上的隔离安装模式问题,并显著提升了Windows上的安装性能(10x到20x),在macOS和Linux上也有轻微的正向或中性影响。隔离安装还提高了在monorepo中使用Bun的可靠性。
      • 引用:"Isolated installs are a significant performance improvement on Windows (10x, sometimes 20x faster installs)."
      • 引用:"More importantly, they make using bun install in monorepos a lot more reliable."
  2. Bun的脚本编写体验

    • dsabanin和papichulo2023都赞赏Bun的脚本编写API,认为其简洁、易用,且比Bash更友好,特别是对于TypeScript用户。
      • 引用:"Really, really nice and ergonomic. Made a few utility scripts today and enjoyed it much better than bash."
      • 引用:"Quite happy with it, now I dont to relearn bash syntax every few months when I need to do some minor changes."
  3. Bun在JS生态系统中的地位

    • Alifatisk认为Bun正在成为JS生态系统的全能解决方案,并称赞Jarred的才华。
      • 引用:"Bun is slowly becoming the all-in-one solution for the js ecosystem, what a talented beast Jarred is."
  4. Bun在monorepo中的使用问题

    • tekkk询问Bun在pnpm monorepo中的兼容性,担心迁移后可能缺少某些功能。
      • 引用:"So can I use bun now in pnpm monorepo without problems?"
      • 引用:"I don't want to do the hassle of migrating only to find out some functionalities are missing."
  5. 技术细节的疑问

    • markl42询问Bun在底层与现有工具有何不同,反映了部分用户对技术细节的关注。
      • 引用:"Can someone explain what this does differently to the status quo under the hood?"

总结:Bun在性能、脚本编写体验和生态系统中的地位受到广泛认可,但在monorepo中的兼容性和技术细节上仍存在一些疑问。