是否可以为haskell脚本指定`stack.yaml`文件?

时间:2018-10-08 17:52:54

标签: haskell haskell-stack

假设我在haskell项目目录中有以下脚本:

#!/usr/bin/env stack
-- stack --resolver lts-12.5 script

-- some imports here

main :: IO ()
main = do
  -- some code here

我想使用项目目录中存在的stack.yaml文件,以便获取所需的软件包,因为我想从特定的git commit而不是lts-12.5获取它们。

我尝试在--stack-yaml stack.yaml之后添加--resolver lts-12.5,但是在运行脚本Ignoring override stack.yaml file for script command: stack.yaml时收到此警告。

是否可以将我的stack.yaml文件用于脚本?还是可以指定我要从中获取软件包的git commit(例如在location内将commitgitstack.yaml一起使用)?

1 个答案:

答案 0 :(得分:7)

您可以使用自定义快照文件来实现。例如,在snapshot.yaml中:

resolver: ghc-8.4.3
name: has-acme-missiles
packages:
- acme-missiles-0.3

Main.hs中:

#!/usr/bin/env stack
-- stack --resolver snapshot.yaml script
import Acme.Missiles

main :: IO ()
main = launchMissiles

结果:

$ ./Main.hs 
Nuclear launch detected.