2016-04-06 4 views
0

Ich verwende den Befehl stack install, um Abhängigkeiten für ein neues Projekt zu speichern. Wie kann ich diese Abhängigkeiten in stack.yaml speichern? Wenn ich etwas nicht verpasse, kann ich nicht sehen, wo der Stapel die Projektabhängigkeiten aufzeichnet, und ich kann anscheinend nichts in einer Dokumentation darüber finden.Wie bekomme ich einen Stack, um Abhängigkeiten zu speichern?

+2

Es gibt ein offenes Problem für diese Featureanforderung: https://github.com/commercialhaskell/stack/issues/1933. –

Antwort

4

Sie behalten Ihre Abhängigkeiten immer noch in einer .cabal Datei. Von the Stack FAQ:

  • Eine .cabal Datei wird für jedes Paket zur Verfügung gestellt und alle Metadaten auf Paketebene definiert wie es funktioniert in der Clique zu installierende Welt: Module, ausführbare Dateien, Test-Suiten, etc. Keine Änderung überhaupt an dieser Front.
  • Eine Datei "stack.yaml" verweist auf mindestens ein Paket und bietet Informationen darüber, woher die Abhängigkeiten stammen.

Wenn Sie weitere Versionen von Abhängigkeiten als die LTS Haskell Snapshot müssen Sie verwenden, werden fügen Sie sie in die extra-deps portion of the stack.yaml file.

+0

Gibt es eine Möglichkeit, Deps zu automatisieren, die der Cabal-Datei hinzugefügt werden? Es ist schön, Paketmanager aus anderen Sprachen zu verwenden, wenn sie die Abhängigkeiten mit der richtigen Version der Datei für Sie hinzufügen. Oder ist das eine bewusste Designentscheidung? –

+1

Ich glaube nicht, dass es einen Weg gibt, es zu automatisieren. Ich denke, es ist eine absichtliche Entscheidung, basierend darauf, wie komplex '.cabal' Dateien sein können und dass Sie mehrere Pakete und mehrere' .cabal' Dateien in einem einzigen Stack-Projekt haben können. Von Natur aus ist es nicht so einfach wie zum Beispiel eine Datei 'packages.json' in einem Knotenprojekt. –

+3

Stack unterstützt auch eine 'package.yaml' Datei, die viel einfacher ist als' .cabal' Dateien. [hpack] (https://github.com/sol/hpack) wandelt die YAML-Datei in eine Cabal-Datei um. –