feat: 增加 @dagrejs/dagre 布局(dagre2)
增加 @dagrejs/dagre 布局(dagre2)
@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。
@dagrejs/dagre 与 dagre 的区别
Tl;Dr 建议支持,
- 我看官方已经有想法要 deprecated 老包了
- 核心算法过程并未看到显著区别,看起来主要是语法变化,且实际测试结果来看,相同影响因素下的布局效果基本无差异。预期比较稳定
下面内容主要是让 ai 干的,我只看了核心算法部分,和大概核实了一下主要信息,不影响结论
概述
@dagrejs/dagre 与 dagre 本质上是同一个项目在不同 npm 版本线上的发布形态。官方推荐使用新的、带有 @dagrejs scope 的版本。
根据其官方 GitHub 仓库的 README 说明:“npm 上有两个版本,仅 DagreJs org (@dagrejs/dagre) 的在持续更新”。这明确指出了 @dagrejs/dagre 是当前唯一处于活跃维护状态的官方包。
主要差异
1. 维护与版本状态
-
dagre: 最后一个版本是0.8.5,发布于约 6 年前,已完全停止维护。 -
@dagrejs/dagre: 当前最新版本为1.1.8,最近一个月仍在发布新版本,并且 GitHub 上已存在v2.0.0的发布记录。这是项目持续演进的主线。
社区中已有相关讨论,维护者计划将旧的 dagre 包在 npm 上标记为 deprecated(废弃),以引导所有用户迁移至新的 @dagrejs/dagre 包。
2. 包体积与依赖
@dagrejs/dagre 在包体积和依赖管理上进行了显著优化,使其更符合现代前端项目的标准。
-
[email protected]:- 解包体积:约 845 kB
- 文件数:43
- 依赖数:2
-
@dagrejs/[email protected]:- 解包体积:约 303 kB
- 文件数:34
- 依赖数:1
新版本的体积减少了约 64%,依赖更少,整体更轻量。
3. TypeScript 支持
-
@dagrejs/dagre: 内置了index.d.ts类型定义文件,提供第一方的 TypeScript 支持。 -
dagre: 通常需要配合社区维护的@types/dagre包来获得类型支持。
官方类型定义可能比社区版本更严格或存在差异
4. 功能与 API
两者均源自同一代码仓库,其核心定位和 API 体系保持一致,旨在为有向图提供客户端布局计算。升级并非“换库”,而更像是常规的版本升级。 核心算法过程并未看到显著区别,看起来主要是语法变化,且实际测试结果来看,相同影响因素下的布局效果基本无差异。
主要差异源于版本跨度带来的演进,包括:
- 构建方式:新版本采用了更现代的构建工具链。
- 类型定义:从无到有的官方 TypeScript 支持。
- 配置体验:在长期迭代中,个别配置项的行为或默认值可能存在细微差异。
参考链接
- https://www.npmjs.com/package/@dagrejs/dagre
- https://www.npmjs.com/package/dagre
- https://github.com/dagrejs/dagre
- https://github.com/dagrejs/dagre/issues/469
@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。
@hustcc 我理解最好是可以升级 dagre2,之前之所以没有直接升也是因为怕你们要考虑老用户要保持兼容
@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。
@hustcc 我理解最好是可以升级 dagre2,之前之所以没有直接升也是因为怕你们要考虑老用户要保持兼容
确实新版的 dagrejs 能力更强,我们这边直接升级了~ https://github.com/antvis/layout/blob/v5/packages/layout/src/dagre/index.ts
好的,痛失一次合入开源主干的机会
---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2025年12月18日 14:47 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [antvis/layout] feat: 增加 @dagrejs/dagre 布局(dagre2) (PR #245) | yvonneyx left a comment (antvis/layout#245)
@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。
@hustcc 我理解最好是可以升级 dagre2,之前之所以没有直接升也是因为怕你们要考虑老用户要保持兼容
确实新版的 dagrejs 能力更强,我们这边直接升级了~ https://github.com/antvis/layout/blob/v5/packages/layout/src/dagre/index.ts
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
好的,痛失一次合入开源主干的机会 … ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2025年12月18日 14:47 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [antvis/layout] feat: 增加 @dagrejs/dagre 布局(dagre2) (PR #245) | yvonneyx left a comment (antvis/layout#245) @prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。 @hustcc 我理解最好是可以升级 dagre2,之前之所以没有直接升也是因为怕你们要考虑老用户要保持兼容 确实新版的 dagrejs 能力更强,我们这边直接升级了~ https://github.com/antvis/layout/blob/v5/packages/layout/src/dagre/index.ts — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
另外一个我们看看,最近也在做 2.0 升级,有兴趣可以一起搞
ok 的,有时间可以一起搞下,可以邮件约个时间对一下,我主要是有向图稍微了解一点,其他的可能要学习一下