# Haddock: better support for multiple components

Recently I enhanced support for publishing haddocks of multiple components (see this pull request). It will be available in next release of GHC (GHC-9.0.2). Note that there is still room for improvement (e.g. external links to hackage). Currently, there's no tooling support, so it might still feel a bit hacky.

First one needs to compile haddocks of all the components, which can be done with either cabal or stack:

cabal haddock --haddock-html \
all


The second step is to copy all the haddocks to a common directory, e.g. docs folder. To compile the contents page (the haddock entry page), index with support of quickjump one can run:

haddock -o docs \
--quickjump \
--gen-index \
--gen-contents \

where one needs to list each component with --read-interface pointing to the compiled *.haddock interface file.
The docs directory can be served with a local http server or github-pages. Check out an example project here. Note that some settings are hidden in its cabal.project file. Its haddocks, which also include haddocks of base library are available here.