为什么 Stack 会在每次构建时重新构建一些依赖项?
Why does Stack rebuild some dependencies on each build?
我现在正在学习使用堆栈的 hakyll 静态站点生成器。
当我在我的Hakyll站点目录下执行stack build
重建site.hs
时,stack每次也会重建copy/register依赖,如下图:
$ 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
.
进行非常小的更改,重建也需要相当长的时间
为什么堆栈会重建这些包?有什么办法可以减少重建时间吗?
谢谢。
这里有一个讨论https://github.com/commercialhaskell/stack/issues/3899。这是一个已知问题,由较新版本的黑线鳕使用子库引发。有一个 PR 打开解决这个问题,但它还没有被合并。
我现在正在学习使用堆栈的 hakyll 静态站点生成器。
当我在我的Hakyll站点目录下执行stack build
重建site.hs
时,stack每次也会重建copy/register依赖,如下图:
$ 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
.
为什么堆栈会重建这些包?有什么办法可以减少重建时间吗?
谢谢。
这里有一个讨论https://github.com/commercialhaskell/stack/issues/3899。这是一个已知问题,由较新版本的黑线鳕使用子库引发。有一个 PR 打开解决这个问题,但它还没有被合并。