stack.yaml 文件是否应该签入版本控制?

Is the stack.yaml file supposed to be checked into version control?

我对 stack 很陌生,想知道是 git commit 还是 .gitignore 那个文件。

这两种选择的含义是什么?

我会说你应该提交 stack.yaml,因为这样可以更容易地以可重现的方式构建你的包。如果您的存储库是 public,并且如果您在 stack.yaml 中使用更奇特的 extra-deps(指向 Git 存储库的指针,源代码树中的二级 cabal 包,则这一点尤其重要,等)。

一个补充观察是,即使我们使用堆栈,我们仍然应该为 .cabal 文件中的依赖项提供合理的版本界限,否则会使不使用堆栈或没有集合的人的生活更加艰难不同于 stack.yaml.

指定的包数

是的。 stack.yaml 有一大堆(并不总是必要的)字段,例如对于一致构建很重要的额外依赖项。签到。