我理解(1)我项目的build-depends
文件中的.cabal
部分将确保stack.yml
中指定的解析程序中存在的指定包可用(在适当的版本中) )并在我测试或运行我的包时使用(例如,使用stack ghci
或stack test
等。)
我还收集(2)我extra-deps
的{{1}}部分用于获取不在指定解析器中的包。
但我对
的作用感到困惑stack.yml
这与stack build some-package
有何不同?我extra-deps
或some-package
等时会使用stack test
吗?为什么要使用它而不是仅仅将stack ghci
添加到some-package
? (而且,我有(1)和(2)对吗?)
答案 0 :(得分:1)
build
命令的主要目的是实际触发构建,即编译。默认情况下,stack build
将构建stack.yaml
的{{1}}部分中列出的所有“本地”包。如果将包名称作为参数传递给packages
,则通常具有以下两个目的之一:
build
。通常,您会使用hlint
执行此操作,这是stack install PKG
。堆栈的一个核心设计原则是构建应该是可重现的,即具有相同代码和相同配置的项目应始终为stack build --copy-bins PKG
提供相同的结果。
这意味着stack build
或stack build
永远不会更改项目配置或向项目添加依赖项。
有关stack install
命令的更多详细信息,请查看the relevant docs。