繁体   English   中英

Stack.yaml vs package.yaml用于添加依赖项

[英]Stack.yaml vs package.yaml for adding dependencies

可能是一个愚蠢的问题:

Stack文档提到package.yaml是添加依赖项的正确位置,但是我在项目目录中看到的只是一个stack.yaml文件。 那是正确的地方吗?

(我看到一个现有的问题 ,询问这两个文件之间的冗余性,但是我什至根本看不到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.yaml中提到了依赖stack.yaml

  • 该软件包不在堆栈快照中
  • 您需要与堆栈快照提供的版本不同的软件包版本
  • 该软件包(或您需要的特定版本)完全不受黑客攻击(例如:您需要堆栈才能从github获取它)
  • 您需要使用非默认标志编译软件包
  • 等等

没关系,事实证明我已经运行了stack new <project> simple ; 如果我运行了stack new <project> new-project ,它将生成package.yaml文件,而不是当前在那找到的<project>.cabal文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM