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

无需重新编译生成普通和全暴露版本Haddock文档的解决方案问询

问题原因

Stack默认会复用已生成的Haddock产物,且不会感知--haddock-arguments的参数变更,因此第二次执行stack haddock时会直接跳过文档生成步骤,无需执行全量stack clean也有可落地的替代方案。

可行解决方案

方案1:使用独立工作目录隔离构建产物

这个方法完全避免两次构建的产物互相干扰,不需要清理原有缓存,源码编译步骤只会在第一次使用对应工作目录时执行一次,后续重复生成文档都可以复用编译缓存:

  • 第一次生成默认版本文档:
    stack haddock --work-dir .stack-work-default
    
    执行完成后拷贝对应文档到发布目录
  • 第二次生成全暴露模块版本文档:
    stack haddock --haddock-arguments "--show-all" --work-dir .stack-work-showall
    
    执行完成后拷贝对应文档到发布目录

如果需要节省磁盘空间,你可以在所有文档生成完成后删除不需要的工作目录即可。

方案2:删除Haddock构建标记触发重建,复用全局编译缓存

Stack判断Haddock是否已生成只依赖对应模块目录下的.haddock-built标记文件,你只需要在两次生成文档之间删除这个标记和已生成的文档,不需要清理整个项目的编译产物,全程仅需编译一次源码:

  1. 先完成全量项目编译,避免后续步骤重复编译:
    stack build
    
  2. 生成默认版本文档,完成后拷贝到发布目录:
    stack haddock --no-build
    
  3. 删除所有已生成的Haddock标记和文档产物:
    find $(stack path --dist-dir) -name ".haddock-built" -delete
    rm -rf $(stack path --local-install-root)/doc
    
  4. 生成全暴露模块版本文档,完成后拷贝到发布目录:
    stack haddock --no-build --haddock-arguments "--show-all"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:39:02