35

我已经用 Haddock 样式注释了我的代码,并希望生成可浏览的文档。由于我也在使用堆栈,因此我想将文档生成集成到工作流程中。但是,我还不能生成任何有用的东西。

我可以跑

stack haddock

它会以我想要的样式生成文档(可以在里面找到~/.stack/),但它似乎只为我所依赖的包生成文档,而不是为我自己的代码生成文档。

当我跑

stack haddock --help

我得到的印象是我可以使用附加参数--haddock为我自己的项目生成文档,并--no-haddock-deps为我的依赖项省去文档。但是,当我跑步时

stack haddock --haddock --no-haddock-deps

似乎什么都没有发生。如果我stack clean首先它会重新编译我的所有代码,但没有生成似乎与文档有任何关系的输出。

作为中间解决方案,我也尝试过自己运行 Haddock,即

haddock my-source.hs

但后来我收到一个错误,它找不到文件所依赖的模块(由堆栈在本地安装)。这给我的印象是文档生成必须以某种方式通过堆栈。我一直在寻找,但没有真正找到任何与配置我的文件.cabalstack.yaml文件相关的解释。

TL;博士

如何使用 stack 和 Haddock 为我自己的包中的代码生成文档?

4

2 回答 2

19

根据堆栈问题跟踪器上的这张票,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

于 2015-09-22T14:00:16.267 回答
8

https://www.reddit.com/r/haskell/comments/5ugm9s/how_to_generate_haddock_docs_for_nonlibrary_code/ddtwqzc/

以下解决方案仅在指定单个文件时有效:

stack exec -- haddock --html src/Example.hs src/Main.hs --hyperlinked-source --odir=dist/docs
于 2017-08-06T10:14:33.280 回答