You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何生成并查看Haskell项目的模块依赖树?

生成并查看Haskell项目模块依赖树的实现方法

下面是几种不同场景下的常用实现方案:

方案1:生成可视化依赖图(最常用)

需要用到graphmod工具和系统的graphviz组件:

  • 先安装依赖:
    1. 安装系统级的graphviz(提供dot命令用于渲染图片),对应系统的包管理器直接安装即可
    2. 安装Haskell生态的graphmod:执行stack install graphmod或者cabal install graphmod
  • 生成依赖图:
    在项目根目录执行以下命令,就能得到png格式的模块依赖图:
    # 生成包含所有依赖的完整依赖图
    graphmod | dot -Tpng > full-module-deps.png
    # 仅保留项目内部模块,过滤外部依赖和基础库
    graphmod --no-qualify --exclude=Prelude --exclude=Control.* --exclude=Data.* | dot -Tpng > project-only-deps.png
    

方案2:终端输出文本格式依赖树

不需要渲染图片,只想快速在终端查看依赖结构可以用这个方案:

  • 如果你用Stack作为构建工具,直接执行:
    # 查看项目依赖的所有包的树状结构
    stack ls dependencies --tree
    # 输出可用于后续处理的dot格式依赖关系,可自行调整过滤规则
    stack dot --no-external | dot -Ttxt
    
  • 如果你用Cabal作为构建工具,直接执行:
    cabal build --enable-dependency-report
    
    构建完成后会在dist-newstyle目录下生成HTML格式的依赖报告,里面包含清晰的模块级依赖树展示。

方案3:轻量手动梳理方案

如果不想安装额外工具,可以用GHC原生参数生成每个模块的依赖清单:

  • 编译项目时加上-ddump-minimal-imports参数,GHC会为每个模块生成对应的.imports文件,里面列出了该模块所有直接导入的依赖模块,你可以根据这些文件自行梳理出需要的依赖树结构。

小提示:如果项目模块数量多,生成的依赖图可能会很密集,可以通过增加过滤参数排除测试模块、第三方工具模块等不需要展示的内容,最终的图会更清晰易读。

内容的提问来源于stack exchange,提问作者Petras Purlys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:15:04