我已经用Haddock样式注释了我的代码,并希望生成可浏览的文档。由于我也使用堆栈,我想将文档生成集成到工作流程中。但是,我还没有能够产生任何有用的东西。
我可以跑
stack haddock
并且它将以我想要的样式生成文档(在~/.stack/
中深入发现),但它似乎只生成我依赖的包的文档,而不是我自己的代码。
我跑的时候
stack haddock --help
我得到的印象是我可以使用额外的参数--haddock
为我自己的项目生成文档,而--no-haddock-deps
则省略了我的依赖项的文档。但是,当我跑
stack haddock --haddock --no-haddock-deps
似乎什么也没发生。如果我首先stack clean
它将重新编译我的所有代码,但没有生成输出似乎以任何方式与文档相关。
作为一个中间解决方案,我也试过自己运行Haddock,即
haddock my-source.hs
但后来我得到一个错误,它无法找到文件依赖的模块(由堆栈本地安装)。这让我觉得文档生成必须以某种方式通过堆栈。我已经找了,但没有找到任何与配置我的.cabal
和stack.yaml
文件相关的文档解释。
TL; DR
如何使用stack和Haddock为我自己的包中的代码生成文档?
根据堆栈问题跟踪器上的this ticket,Stack目前只能为库构建文档,但不能构建可执行文件。
可以使用以下命令将Cabal配置为使用堆栈数据库:
cabal configure --package-db=clear --package-db=global --package-db=$(stack path --snapshot-pkg-db) --package-db=$(stack path --local-pkg-db)
之后你可以运行cabal haddock --executables
来生成文档。
顺便说一句,stack haddock
只是stack build --haddock
的捷径,所以没有必要写stack haddock --haddock
。
以下解决方案仅在指定单个文件时有效:
stack exec -- haddock --html src/Example.hs src/Main.hs --hyperlinked-source --odir=dist/docs