layout icon indicating copy to clipboard operation
layout copied to clipboard

feat: 增加 @dagrejs/dagre 布局(dagre2)

Open prgrmrwy opened this issue 7 months ago • 5 comments

增加 @dagrejs/dagre 布局(dagre2)

prgrmrwy avatar Jul 05 '25 06:07 prgrmrwy

@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。

hustcc avatar Dec 03 '25 07:12 hustcc

@dagrejs/dagre 与 dagre 的区别

Tl;Dr 建议支持,

  1. 我看官方已经有想法要 deprecated 老包了
  2. 核心算法过程并未看到显著区别,看起来主要是语法变化,且实际测试结果来看,相同影响因素下的布局效果基本无差异。预期比较稳定

下面内容主要是让 ai 干的,我只看了核心算法部分,和大概核实了一下主要信息,不影响结论


概述

@dagrejs/dagredagre 本质上是同一个项目在不同 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 在包体积和依赖管理上进行了显著优化,使其更符合现代前端项目的标准。

新版本的体积减少了约 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 avatar Dec 18 '25 04:12 prgrmrwy

@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。

@hustcc 我理解最好是可以升级 dagre2,之前之所以没有直接升也是因为怕你们要考虑老用户要保持兼容

prgrmrwy avatar Dec 18 '25 04:12 prgrmrwy

@prgrmrwy hello,这个 pr 还有后续吗?看起来内容不错,只不过需要看看这个和旧版本的区别是什么?为什么不是升级默认的 dagre,而是增加 dagre2。

@hustcc 我理解最好是可以升级 dagre2,之前之所以没有直接升也是因为怕你们要考虑老用户要保持兼容

确实新版的 dagrejs 能力更强,我们这边直接升级了~ https://github.com/antvis/layout/blob/v5/packages/layout/src/dagre/index.ts

yvonneyx avatar Dec 18 '25 06:12 yvonneyx

好的,痛失一次合入开源主干的机会

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 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: @.***>

prgrmrwy avatar Dec 18 '25 07:12 prgrmrwy

好的,痛失一次合入开源主干的机会 ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 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 升级,有兴趣可以一起搞

yvonneyx avatar Dec 23 '25 03:12 yvonneyx

ok 的,有时间可以一起搞下,可以邮件约个时间对一下,我主要是有向图稍微了解一点,其他的可能要学习一下

prgrmrwy avatar Dec 23 '25 08:12 prgrmrwy