Stack.yaml против package.yaml для добавления зависимостей - PullRequest
0 голосов
/ 17 февраля 2019

Возможно, глупый вопрос:

В документации Stack упоминается package.yaml как правильное место для добавления зависимостей, но все, что я вижу в каталоге моего проекта, - это единственный файл stack.yaml;тогда это правильное место?

(я вижу существующий вопрос , который спрашивает об избыточности между этими двумя файлами, но я даже не вижу файл package.yaml вообще!!)

Если это поможет:

$ stack --version
Version 1.9.3, Git revision 40cf7b37526b86d1676da82167ea8758a854953b (6211 commits) x86_64 hpack-0.31.1

Ответы [ 3 ]

0 голосов
/ 17 февраля 2019

package.yaml фактически обработано hpack ;это не стек функция, за исключением того, что если он увидит ее там в вашем проекте, он будет использовать ее и сгенерирует .cabal файл.

ВыВы можете создать package.yaml самостоятельно с нуля.Вам не нужно делать stack new или что-то еще.

Я, конечно, нахожу это с помощью package.yaml вместо удобного project.cabal .Как такового нет хорошего руководства пользователя (как указано в hpack README ), но есть несколько примеров, и вы поймете, что в этом нет ничего особенного:

Я видел несколько упоминаний о том, что библиотека Cabal теперь поддерживает новые функции для уменьшения утомительного повторения (возможно, в формате >= 2.x?), из-за которого package.yaml может исчезнуть довольно скоро, что было бы хорошо.

0 голосов
/ 18 февраля 2019

Обычно package.yaml - это правильное место для добавления зависимостей, а stack.yaml - правильное место для добавления дополнительной информации об этих зависимостях.

Если вы просто используете пакеты из основного снимка стека проектаи используя настройки сборки по умолчанию для всех из них: вам вообще не нужно редактировать stack.yaml.Зависимости упоминаются в stack.yaml, когда:

  • Пакет не находится в снимке стека
  • Вам нужна версия пакета, отличная от той, которую предоставляет снимок стека
  • Пакет (или нужная вам конкретная версия) вообще не используется (например, вам нужен стек, чтобы получить его из github)
  • Пакет должен быть скомпилирован сфлаги по умолчанию
  • и т. д.
0 голосов
/ 17 февраля 2019

Неважно, оказывается, я бегал stack new <project> simple;если бы я запустил stack new <project> new-project, он бы сгенерировал файл package.yaml вместо файла <project>.cabal, который я сейчас там нахожу.

...