使用 本地构建我的 Haskell 项目时stack build,仅重新编译更改的源文件。不幸的是,我无法让 Stack 在 GitHub Actions 上表现得像这样。请问有什么建议吗?
例子
我用Lib.hsand创建了一个简单的例子Fib.hs,我什至检查缓存的 .stack-work 文件夹是否在构建之间更新,但它总是编译两个文件,即使只更改一个文件。
这是示例:
Lib.hs和Fib.hs+ 依赖项):https : //github.com/MarekSuchanek/stack-test/runs/542163994Lib.hs更改,同时构建Lib.hs和Fib.hs):https : //github.com/MarekSuchanek/stack-test/runs/542174351我可以从日志(详细堆栈)中观察到缓存中的某些内容正在更新,但我完全不清楚是什么以及为什么。它正确地发现只有Lib.hs被改变了:“ stack-test-0.1.0.0: unregistering (local file changes: src/Lib.hs)”所以我不明白为什么所有的都被编译了。我注意到,在2Fib.hi没有更新,.stack-work但其他人(Fib.o,Fib.dyn_hi,和Fib.dyn_o)是。
笔记
当没有更改源文件时, ~/.stack 缓存是可以的,也可以不构建。当然,这是一个虚拟示例,但我们有不同的项目,其中包含更多源文件,可以显着加快构建速度。当更改非源文件(例如 README 文件)时,不会按预期构建任何内容。