可能是一个愚蠢的问题:
Stack documentation提到package.yaml
是添加依赖项的正确位置,但我在项目目录中看到的只是一个stack.yaml
文件;那是对的地方吗?
(我看到existing question询问这两个文件之间的冗余,但我甚至都看不到package.yaml
文件!!)
如果它有帮助:
$ stack --version
Version 1.9.3, Git revision 40cf7b37526b86d1676da82167ea8758a854953b (6211 commits) x86_64 hpack-0.31.1
package.yaml实际上是由hpack处理的;它不是一个堆栈功能,除非它在你的项目中看到它,它将使用它并生成一个.cabal文件。
您可以从头开始创建package.yaml。你不需要做stack new
或其他什么。
我当然发现它使用package.yaml而不是project.cabal方便。这里没有很好的用户指南(正如hpack README中所指出的那样),但是有一些例子,你会发现它并没有多少:
我看到一些提到Cabal库现在支持新功能以减少繁琐的重复(可能是以>= 2.x
格式?),这可能会使package.yaml的需求很快消失,这很好。
通常package.yaml
是添加依赖项的正确位置,stack.yaml
是添加有关这些依赖项的其他信息的正确位置。
如果您只是使用项目主堆栈快照中的包并使用所有这些包的默认构建设置:您通常根本不需要编辑stack.yaml
。在以下情况中,stack.yaml
中提到了依赖关系:
没关系,原来我跑了stack new <project> simple
;如果我运行stack new <project> new-project
,它将生成package.yaml
文件而不是我目前在那里找到的<project>.cabal
文件。