我无法改变GHC的编译时间,但我可以控制编译事物的环境。我可以用 git 和堆栈做些什么来最大限度地减少(重新)构建造成的停机时间?
Haskell堆栈在.stack-work
目录中缓存已编译的依赖项,它非常适合一次处理一件事。但是,我发现自己在分支之间来回切换。我已经完成了git checkout
,也许某些.stack-work
缓存可用。但我非常希望git worktree
能够在不同的目录中获得分支的副本。 Worktree在构建时特别困难,因为每个worktree目录都有自己的.stack-work
,因此必须下载/配置/编译/安装自己的依赖项而不是使用现有的依赖项。
我一直在阅读有关Nix和Haskell的一些内容,但是由于堆栈创建了自己的缓存,它忽略了Nix编译和安装的任何内容。从我读过的内容来看,我真的希望Nix能够处理依赖关系并使用堆栈来处理我的个人代码。我从stackage和stack solver
中获益匪浅,所以我不想放弃它们。但是,当我看到一个"取消注册"运行stack build --only-dependencies && stack ghci
时的消息,我知道我得到提示之前至少有10-15分钟。
非常感谢!