将Haste集成到Stack工具链中

Joh*_*ler 5 haskell haste haskell-stack

我正在为一个项目使用Haskell Stack,我想包括Haste it编译客户端逻辑。我喜欢Stack可以抽象出环境之间不同的构建和安装问题的事实,如果它构建在我的计算机上,它将构建在其他人的计算机上。

如何将急速集成到Stack工具链中?制定一次设置很好,但是我不想每次将代码移至新系统时都必须重新创建整个工具链。

Ale*_*lec 5

这应该可以工作,但是由于这个已知错误,我遇到了额外的问题,因此请稍加保留。确保您的.cabal文件具有正确的依赖项,尤其是if impl(haste) ..部分(请参阅此)。似乎 Haste 的大多数依赖项(并且因为 Haste 使用 GHC 7.10.3 截至今天)与 一起使用lts-6.14,所以我将其用作解析器。

仓促项目.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
Run Code Online (Sandbox Code Playgroud)

堆栈.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
Run Code Online (Sandbox Code Playgroud)

然后,从同一目录,您现在可以继续执行Haste通常设置说明,但使用 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
Run Code Online (Sandbox Code Playgroud)

然后,您应该能够运行所有常用命令,但以stack exec --. 例如

extra-deps:
- HTTP-4000.2.23
- ghc-simple-0.3
- haste-compiler-0.5.4.2
- shellmate-0.2.3
resolver: lts-6.14
Run Code Online (Sandbox Code Playgroud)