我正在为一个项目使用Haskell Stack,我想包含Haste它编译客户端逻辑。我喜欢 Stack 抽象出环境之间不同的构建和安装问题的事实,如果它构建在我的机器上,它将构建在其他人的机器上。
如何将 Haste 集成到 Stack 工具链中?制定一次设置很好,但我不想每次代码移动到新系统时都必须重新创建整个工具链。
我正在为一个项目使用Haskell Stack,我想包含Haste它编译客户端逻辑。我喜欢 Stack 抽象出环境之间不同的构建和安装问题的事实,如果它构建在我的机器上,它将构建在其他人的机器上。
如何将 Haste 集成到 Stack 工具链中?制定一次设置很好,但我不想每次代码移动到新系统时都必须重新创建整个工具链。
这应该可行,但是由于这个已知的错误,我遇到了额外的问题,所以请谨慎使用。确保您的.cabal
文件具有正确的依赖关系,尤其是if impl(haste) ..
部分(请参阅this)。似乎 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
堆栈.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
然后,在同一目录中,您现在可以继续执行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