为什么Stack会在每个构建上重建一些依赖项?

时间:2018-04-13 02:21:38

标签: haskell haskell-stack hakyll

我现在正在学习带有堆栈的hakyll静态站点生成器。

当我在我的Hakyll站点的目录中执行stack build以重建site.hs时,堆栈每次都会重建并复制/注册依赖项,如下所示:

$ stack --version
Version 1.6.5, Git revision 24ab0d6ff07f28276e082c3ce74dfdeb1a2ca9e9 (5514 commits) x86_64 hpack-0.20.0
$ grep -Ev '^[[:space:]]*#' stack.yaml | uniq

resolver: lts-11.4

packages:
- .

$ stack build
haddock-library-1.4.5: configure
haddock-library-1.4.5: build
haddock-library-1.4.5: copy/register
pandoc-2.1.2: configure
pandoc-2.1.2: build
pandoc-2.1.2: copy/register
pandoc-citeproc-0.14.3: configure
pandoc-citeproc-0.14.3: build
pandoc-citeproc-0.14.3: copy/register
hakyll-4.12.1.0: configure
hakyll-4.12.1.0: build
hakyll-4.12.1.0: copy/register
... and site.hs.compilation ...

这对我来说很奇怪,因为我从未改变过那些包裹。 即使对site.hs进行非常小的更改,重建也需要很长时间。

为什么堆栈会重建这些包?有没有办法减少重建时间?

谢谢。

1 个答案:

答案 0 :(得分:4)

这里讨论https://github.com/commercialhaskell/stack/issues/3899。这是由使用子库的较新版本的haddock触发的已知问题。有公关公开解决问题,但尚未合并。