Sam*_*den 26 haskell cabal haddock haskell-stack
我已经用Haddock样式注释了我的代码,并希望生成可浏览的文档.由于我也使用堆栈,我想将文档生成集成到工作流程中.但是,我还没有能够产生任何有用的东西.
我可以跑
stack haddock
Run Code Online (Sandbox Code Playgroud)
它将生成我想要的样式的文档(深入内部~/.stack/),但它似乎只生成我依赖的包的文档,而不是我自己的代码.
我跑的时候
stack haddock --help
Run Code Online (Sandbox Code Playgroud)
我得到的印象是,我可以使用附加参数--haddock为我自己的项目生成文档,并--no-haddock-deps省略我的依赖项的文档.但是,当我跑
stack haddock --haddock --no-haddock-deps
Run Code Online (Sandbox Code Playgroud)
似乎什么也没发生.如果我stack clean首先它将重新编译我的所有代码,但没有生成输出,似乎以任何方式与文档相关.
作为一个中间解决方案,我也试过自己运行Haddock,即
haddock my-source.hs
Run Code Online (Sandbox Code Playgroud)
但后来我得到一个错误,它无法找到文件依赖的模块(由堆栈本地安装).这让我觉得文档生成必须以某种方式通过堆栈.我已经找了,但没有真正找到任何与配置文档.cabal和stack.yaml文件相关的解释.
TL; DR
如何使用stack和Haddock为我自己的包中的代码生成文档?
Rüd*_*nke 15
根据堆栈问题跟踪器上的这张票,Stack目前只能为库构建文档,但不能构建可执行文件.
可以使用以下命令将Cabal配置为使用堆栈数据库:
cabal configure --package-db=clear --package-db=global --package-db=$(stack path --snapshot-pkg-db) --package-db=$(stack path --local-pkg-db)
Run Code Online (Sandbox Code Playgroud)
之后您可以运行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
Run Code Online (Sandbox Code Playgroud)