通用的 OCaml 项目依赖扫描和更新工具。自动扫描项目中所有 dune 文件的库依赖,更新 dune-project 的 depends 字段。
- 递归扫描项目中所有
dune文件(排除_build和子项目) - 提取本地库的短名字(
name)和公开名(public_name) - 提取所有
(libraries ...)中的依赖,过滤掉本地库 - 将库名映射为 opam 包名(例如
ppx_yojson_conv_lib→ppx_yojson_conv) - 解析
dune-project为 S-expression AST - 更新
(package ...)中的(depends ...)字段 - 格式化并写回
dune-project - 使用
dune format-dune-file格式化文件 - 不执行 dune build,由用户手动执行
- 通用工具:支持任意 OCaml 项目,通过命令行参数指定路径
- 自动备份:原
dune-project文件自动备份(.bak后缀) - 智能映射:库名自动映射(下划线转连字符,特殊包名处理)
- 保留配置:只更新 depends 字段,保留其他配置不变
- 去重排序:自动去重和排序依赖列表
- S-expression 格式化:智能格式化输出,保持代码可读性