2016-08-22 1 views
4

J'utilise Haskell Stack pour un projet et je souhaite inclure Haste pour compiler la logique côté client. J'aime le fait que Stack élimine les différents problèmes de construction et d'installation entre les environnements et s'il se construit sur ma machine, il s'appuiera sur celui de quelqu'un d'autre. Comment intégrer Haste dans la chaîne d'outils Stack? Travailler sur une configuration unique est très bien, mais je ne veux pas avoir à recréer toute la chaîne d'outils à chaque fois que le code passe à un nouveau système.Intégration de Haste dans la chaîne d'outils Stack

+0

Je ne connais pas une réponse de pile, mais peut-être que vous voudrez peut-être passer à un système de construction complet comme [shake] (http://shakebuild.com) – MarLinn

Répondre

2

Cela devrait fonctionner, mais prenez cela avec un grain de sel car j'ai des problèmes supplémentaires en raison de this bug connu. Assurez-vous que votre fichier .cabal a les bonnes dépendances, en particulier la partie if impl(haste) .. (see this). On dirait que la plupart des dépendances de Haste (et puisque Haste utilise GHC 7.10.3 à partir d'aujourd'hui) fonctionnent avec lts-6.14, donc j'ai utilisé cela comme résolveur.

hâte-project.cabal

name:    haste-project 
version:    0.1.0.0 
category:   Web 
build-type:   Simple 
cabal-version:  >=1.10 

executable haste-project-exe 
    hs-source-dirs:  app 
    main-is:    Main.hs 
    build-depends:  base >= 4.8 && < 4.9 
    if impl(haste) 
    build-depends:  haste-lib >= 0.5 && < 0.6 
    else 
    build-depends:  haste-compiler >= 0.5 && < 0.6 
    default-language: Haskell2010 

stack.yaml

extra-deps: 
- HTTP-4000.2.23 
- ghc-simple-0.3 
- haste-compiler-0.5.4.2 
- shellmate-0.2.3 
resolver: lts-6.14 

Ensuite, dans le même répertoire, vous pouvez maintenant procéder à l'usual setup instructions for Haste, mais avec la pile complète de les commandes de la Cabale:

$ stack build 
$ stack install haste-compiler # installs haste-boot, haste-cat, haste-pkg, and hastec 
$ stack exec haste-boot  # setup Haste (where I get the bug I mentioned above) 

Ensuite, vous devriez être en mesure d'exécuter toutes les commandes habituelles, mais avec le préfixe stack exec --. Par exemple

$ stack exec -- hastec -O2 -fglasgow-exts myprog.hs