如何为所有包定制Haddock文档生成?

oro*_*ome 10 haskell config haddock

我不清楚如何自定义文档

cabal haddock
Run Code Online (Sandbox Code Playgroud)

产生.例如,如何包含源链接,或使用自定义CSS文件以便它们适用于所有情况?

在我的~/.cabal/config尝试中

haddock
  -- keep-temp-files: False
  -- hoogle: False
  -- html: False
  -- html-location:
  -- executables: False
  -- tests: False
  -- benchmarks: False
  -- all:
  -- internal: False
  css: /Users/Rax/Projects/Haskell/Package/mystuff.css
  hyperlink-source: True
  -- hscolour-css:
  -- contents-location:
Run Code Online (Sandbox Code Playgroud)

但是我不清楚这些设置的范围是什么.

如何自定义Haddock生成的所有文档的默认文档生成:我使用cabal haddockHackage安装的软件包cabal install,甚至是我上传到Hackage的软件包cabal sdist

小智 0

首先, 中的设置~/.cabal/config是每个用户的默认设置。无论何时您致电 ,您的更改都会生效cabal haddock

由于 haddock 文档是为每个包静态构建的,因此您需要重新运行cabal haddock为安装的每个包重新运行该命令以更改其文档的外观。

另外,您似乎混淆了一些内容:cabal sdist没有将任何内容上传到 Hackage。这就是cabal upload目的。

通常你只需将裸包上传到 Hackage,服务器就会自己构建文档,但是有一种方法可以上传你自己构建的文档,以防服务器无法构建或由于其他原因。我使用在http://hackage.haskell.org/upload上找到的以下脚本并进行了一些更改:

#!/bin/sh
set -e

dir=$(mktemp -d dist-docs.XXXXXX)
trap 'rm -rf "$dir"' EXIT

cabal haddock --builddir="$dir" --for-hackage --haddock-option=--hyperlinked-source
# Starting with cabal 2.0, `--publish` is needed for uploading to non-candidate releases
cabal upload -d $dir/*-docs.tar.gz --publish
Run Code Online (Sandbox Code Playgroud)