使用Haddock和堆栈为我自己的代码生成文档

问题描述 投票:26回答:2

我已经用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; DR

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

haskell cabal haddock haskell-stack
2个回答
15
投票

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


3
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.