Что такое пакет.и YAML и стек.и YAML и установка.hs & the-project-name.файлы Кабал-клана?
Я нахожу это, когда я использую stack new the-project-name new-template
команда, многие файлы генерируются в новый каталог. и я замечаю следующие 4 специальных файла:
package.yaml
stack.yaml
Setup.hs
the-project-name.cabal
эти 4 файла, похоже, намереваются предоставить метаданные для программного обеспечения для управления пакетами, но они выглядят запутанными, я имею в виду, почему их 4, Почему не только один, и в чем разница между ними?
1 ответов
эти файлы конфигурации служат различным целям. Неясно, что лучше: иметь один файл конфигурации "все включено" или разные файлы для разных инструментов сборки и разных целей.
интернет-проекта-Имя.Кабал
этот файл содержит описание вашего пакета. Например, список модулей, библиотечных зависимостей, параметров компилятора, метаданных проекта (Имя автора, версия пакета и т. д.). Это описание указано в special for cabal
формат.
пакета.и YAML
этот файл конфигурации используется hpack
. Это позволяет указать те же вещи, которые вы указываете в . Но в формате YAML вместо custom . Также он добавляет некоторые функции над cabal
. Если вы не хотите нырять в hpack
теперь вы можете безопасно удалить . Заметьте, что созданный hpack
С package.yaml
файл так что вы не редактировать Если вы используете hpack
.
стек.и YAML
конфигурации stack
инструмент построения. Добавьте дополнительные параметры конфигурации. Самое главное: имя разрешителя LTS.
настройка.hs
используется для добавления некоторых сборочных крючков. Почти во всех случаях вы также можете удалить этот файл. Но я могу дать вам реальный пример использования этого файла из нашей работы.
мы пишем службу, где разные узлы должны общаться с помощью протокола Формат буферов. TL; DR довольно хороший формат для описания спецификаций сообщений. Эти сообщения записываются в файлы с расширением .proto
. Но на самом деле мы хотим работать с типами Хаскелла. Существует библиотека proto-lens
который может принимать файлы, написанные в формате буферов протокола, анализировать эти файлы и генерировать модули Haskell, содержащие типы данных, представляющие эти сообщения. Это создание файла должно быть сделано до компиляции проекта. Таким образом, этот процесс описан в .