将 Haste 集成到 Stack 工具链中

Integrating Haste into Stack tool chain

我正在使用 Haskell Stack for a project and I want to include Haste 它编译客户端逻辑。我喜欢 Stack 抽象出环境之间不同的构建和安装问题,如果它在我的机器上构建,它将在其他人的机器上构建。

如何将 Haste 集成到 Stack 工具链中?设置一次即可,但我不想每次将代码移至新系统时都必须重新创建整个工具链。

这应该行得通,但由于this known bug. Make sure your .cabal file has the right dependencies, especially the if impl(haste) .. part (see this),我遇到了额外的问题,因此请多加保留。似乎 Haste 的大部分依赖项(并且因为 Haste 从今天开始使用 GHC 7.10.3)与 lts-6.14 一起工作,所以我将其用作解析器。

急速-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

然后,从同一目录,您现在可以继续 usual setup instructions for Haste,但使用 Cabal 命令的 Stack 补充:

$ 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)

然后,您应该能够 运行 所有常用命令,但前缀为 stack exec --。例如

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