gpt4 book ai didi

haskell - 什么是 package.yaml & stack.yaml & Setup.hs & the-project-name.cabal 文件?

转载 作者:行者123 更新时间:2023-12-02 03:41:52 27 4
gpt4 key购买 nike

我发现,当我使用stack new the-project-name new-template命令时,许多文件会生成到一个新目录中。我注意到以下 4 个特殊文件:

package.yaml
stack.yaml
Setup.hs
the-project-name.cabal

这 4 个文件似乎打算为包管理软件提供元数据,但它们看起来很困惑,我的意思是,为什么有 4 个文件,为什么不只有一个,它们之间有什么区别?

最佳答案

这些配置文件有不同的用途。目前尚不清楚哪个更好:使用单个全包配置文件或针对不同构建工具和不同目标的不同文件。

项目名称.cabal

此文件包含您的包的描述。例如,模块列表、库依赖项、编译器选项、项目元数据(作者姓名、包版本等)。此描述是专门为 cabal 格式指定的。

package.yaml

此配置文件由 hpack 使用工具。它允许指定与您在 .cabal 文件中指定的内容相同的内容。但采用 YAML 格式而不是自定义 cabal 格式。它还在 cabal 上添加了一些功能。如果您暂时不想深入了解 hpack,您可以安全地删除 package.yaml 文件。请注意,.cabal 文件是由 hpackpackage.yaml 文件生成的,因此您不得编辑 .cabal 文件(如果您使用的是 hpack)。

stack.yaml

stack 构建工具的配置。添加一些额外的配置参数。最重要的是:LTS 解析器的名称。

Setup.hs

用于添加一些构建 Hook 。在几乎所有情况下,您也可以删除该文件。但我可以为您提供我们工作中该文件的实际使用示例。

我们正在编写服务,其中不同的节点应使用 Protocol Buffer 格式进行通信。 TL;DR 非常适合描述消息规范的格式。这些消息写入扩展名为 .proto 的文件中。但我们实际上想使用 Haskell 类型。存在库 proto-lens ,它可以获取以 Protocol Buffers 格式编写的文件,解析这些文件并生成包含表示这些消息的数据类型的 Haskell 模块。该文件生成应在项目编译之前完成。所以这个过程在 Setup.hs 文件中描述。

关于haskell - 什么是 package.yaml & stack.yaml & Setup.hs & the-project-name.cabal 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50889497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com