Categories: Sonstiges

Wie Sie einen Einstieg in GHCJS finden.

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:

Copy to Clipboard

Oder für die Neueste, die auf ghc-8.0.1 basiert (mit mehr Funjktionen):

Copy to Clipboard

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:

Copy to Clipboard

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:

Copy to Clipboard

Individuell installiertes GHCJS.

Um ein auf deinem PATH installiertes GHCJS zu verwenden, fügen Sie einfach folgendes zu ihrer stack.yaml hinzu:

Copy to Clipboard

(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:

Copy to Clipboard

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.

3DMaster