Um GHCJS mit Stack zu verwenden, platzieren Sie eine GHCJS-Version im Compilerfeld von stack.yaml. Danach sollten alle Stack-Befehle mit GHCJS funktionieren, insbesondere:
- Stack-Setup installiert GHCJS von der Quelle und startet es, was sehr lange dauert.
- Stack-Build kompiliert ihren Code in JavaScript. Insbesondere endet der generierte Code für eine ausführbare Datei in $ (stack path –local-install-root)/bin/EXECUTABLE.jsexe/all.js (bash syntax, wo EXECUTABLE der Name ihrer ausführbaren Datei ist).
Sie können auch bestehende Stack-Projekte erstellen, die auf GHC abzielen und diese stattdessen mit GHCJS erstellen. Zum Beispiel: stack build –compiler ghcjs-0.2.0.9006020_ghc-7.10.3
Es gibt erweiterte Optionen für das Stack-Setup: –ghcjs-boot-options (ein Wort nach dem anderen) und –[no]ghcjs-boot-clean, die ihre Einstellungen an den ghcjs-boot übergeben. Sie müssen genau wissen, was Sie damit machen.
Wenn Sie eine Meldung wie das Programm „ghcjs“-Version >=0.1 ist erforderlich, erhalten, aber die Version von …/ghcjs konnte nicht bestimmt werden, dann müssen Sie möglicherweise eine andere Version des Nodes installieren.
Beispielhafte Konfigurationen.
Neuere Versionen von GHCJS, neu verpackt für Stack.
Diese Versionen von GHCJS wurden von Marcin Tolysz erstellt und wurden speziell für Package-Versionen entwickelt, die den Erwartungen bestimmter Stack-Snapshots entsprechen.
Für GHCJS, die auf ghc-7.10.3 basieren, könnte man es probieren:
Oder für die Neueste, die auf ghc-8.0.1 basiert (mit mehr Funjktionen):
Das Letztere kann über https://github.com/tolysz/prepare-ghcjs generiert werden, das erstere ist etwas manueller. Diese Bundles werden nur mit dem neuesten node-7.4.0 getestet.
Um GHCJS korrekt zu booten und zu verwenden, muss man möglicherweise alex happy hscolour hsc2hs mit dem normalen ghc installieren.
Ältere Resolver:
resolver | ghcjs | url | sha1 |
---|---|---|---|
lts-7.15 | 0.2.1 | http://ghcjs.tolysz.org/ghc-8.0-2017-01-11-lts-7.15-9007015.tar.gz | 30d34e9d704bdb799066387dfa1ba98b8884d932 |
lts-7.14 | 0.2.1/td> | http://ghcjs.tolysz.org/ghc-8.0-2016-12-25-lts-7.14-9007014.tar.gz | 530c4ee5e19e2874e128431c7ad421e336df0303 |
lts-7.13 | 0.2.1 | http://ghcjs.tolysz.org/ghc-8.0-2016-12-18-lts-7.13-9007013.tar.gz | 0d2ebe0931b29adca7cb9d9b9f77d60095bfb864 |
lts-7.8 | http://ghcjs.tolysz.org/ghc-8.0-2016-11-07-lts-7.8-9007008.tar.gz | 190300a3725cde44b2a08be9ef829f2077bf8825 | |
lts-7.7 | http://ghcjs.tolysz.org/ghc-8.0-2016-11-03-lts-7.7-9007007.tar.gz | ce169f85f1c49ad613ae77fc494d5565452ff59a | |
lts-7.5 | http://ghcjs.tolysz.org/ghc-8.0-2016-10-22-lts-7.4-9007004.tar.gz | 450e81028d7f1eb82a16bc4b0809f30730c3e173 | |
lts-7.4 | http://ghcjs.tolysz.org/ghc-8.0-2017-01-11-lts-7.15-9007015.tar.gz | ed77b3c15fedbadad5ab0e0afe1bd42c0a8695b4 | |
lts-7.3 | http://ghcjs.tolysz.org/ghc-8.0-2016-10-11-lts-7.3-9007003.tar.gz | 3196fd5eaed670416083cf3678396d02c50096de | |
lts-7.2 | http://ghcjs.tolysz.org/ghc-8.0-2016-10-01-lts-7.2-9007002.tar.gz | a41ae415328e2b257d40724d13d1386390c26322 | |
lts-7.1 | http://ghcjs.tolysz.org/ghc-8.0-2016-09-26-lts-7.1-9007001-mem.tar.gz | e640724883238593e2d2f7f03991cb413ec0347b | |
lts-6.25 | 0.2.0 | http://ghcjs.tolysz.org/lts-6.25-9006025.tar.gz | 3c87228579b55c05e227a7876682c2a7d4c9c007 |
lts-6.21 | http://ghcjs.tolysz.org/lts-6.21-9006021.tar.gz | 80b83f85dcec182093418e843979f4cee092fa85 | |
lts-6.20 | http://ghcjs.tolysz.org/lts-6.20-9006020.tar.gz | a6cea90cd8121eee3afb201183c6e9bd6bacd94a | |
lts-6.19 | http://ghcjs.tolysz.org/lts-6.19-9006019.tar.gz | ef4264d5a93b269ee4ec8f9d5139da030331d65a | |
lts-6.18 | http://ghcjs.tolysz.org/lts-6.18-9006018.tar.gz | 3e9f345116c851349a5a551ffd94f7e0b74bfabb |
Wenn Sie nicht den gleichen Resolver verwenden, z.B. einen älteren LTS-Snapshot, erhalten Sie einige Warnungen wie diese:
Diese Warnungen können normalerweise ignoriert werden, aber sie deuten auf eine Abweichung zwischen den Paketen ihres Snapshots und denen, die zur Kompilierung ihre Projekt verwendet, hin. Sie erhalten diese Warnungen normalerweise, wenn Sie einen GHCJS-Tarball verwenden, der nicht mit einem bestimmten Snapshot im Hinterkopf verpackt wurde.
GHCJS (alte Basis).
Wenn Sie einige ältere GHCJS-Pakete erstellen möchten, müssen Sie möglicherweise die „alte Basis“ GHCJS verwenden. Verwenden Sie dazu die folgenden Compiler-Informationen:
Individuell installiertes GHCJS.
Um ein auf deinem PATH installiertes GHCJS zu verwenden, fügen Sie einfach folgendes zu ihrer stack.yaml hinzu:
(Oder, ghcjs-0.1.0_ghc-7.10.2, wenn Sie mit einer älteren Version arbeiten).
Dies ist besonders nützlich, wenn Sie GHCJS aus dem Quellcode erstellt haben.
Projekt mit Client und Server.
Für Projekte mit sowohl einem Server als auch einem Client wird empfohlen, eine oder beide ihrer stack.yaml-Dateien in Unterverzeichnissen abzulegen. Auf diese Weise können Sie mit dem aktuellen Arbeitsverzeichnis angeben, ob Sie auf dem Client oder Server arbeiten. Dies wird durch eine einfachere Editor-Tooling ermöglichen, sobald Projekte wie ghc-mod und haskell-ide-engine GHCJS unterstützen.
Zum Beispiel sehen Sie hier, wie ein Skript zum Erstellen von Client und Server aussieht:
Sie können auch beide yaml-Dateien in das gleiche Verzeichnis legen und z.B. ghcjs-stack.yaml haben, aber das funktioniert nicht gut mit Editor-Integrationen.
Stack ohne Snapshot verwenden.
Wenn Sie keinen Snapshot verwenden möchten, platzieren stattdessen die ghcjs-Version im Resolverfeld ihrer stack.yaml. Dies ist auch bei der Verwendung von Stack < 0.1.8 erforderlich.
Einrichten von GHCJS unter Windows.
Wenn der Befehl Stack Setup nicht erfolgreich mit der Meldung: commitBuffer: invalid argument (invalid character) abgeschlossen werden kann, bedeutet dies, dass Sie ein Gebietsschema-Problem haben. Dieses Problem ist nicht exklusiv für GHCJS und kann bei anderen Builds auftreten. Ein Workaround ist es, Language for für Nicht-Unicode Programme auf Englisch (US) zu setzen.
Vielen Dank für ihren Besuch.