Mir*_*lov 5 haskell cabal haskell-stack
我想reactive-banana在我的新Haskell项目中使用.我从来没有使用过小集团安装或stack之前.我使用创建了一个目录并初始化了项目文件stack new.我现在看到目录中有2个文件:new-template.cabal和stack.yaml.
如何设置依赖项并确保它们已下载和编译?
起初,我试图添加- reactive-banana-0.8.0.2中stack.yaml下extra-deps:,但两者stack build并stack solver没有下载.然后,我增加了一个名为部分library在new-template.cabal此:
library
hs-source-dirs: src
exposed-modules: Lib
build-depends: base >= 4.7 && < 5
, reactive-banana >= 0.8
default-language: Haskell2010
Run Code Online (Sandbox Code Playgroud)
每次我试图运行时stack build,它都会出现错误并建议将一些软件包添加到stack.yaml下面extra-deps:,这种情况发生了三次,直到最后安装了所有软件包,并且我可以在stack ghciREPL中导入它们.
所以我的问题是,使用的惯用方法是什么stack?我应该使用这两个文件中的哪一个来指定依赖项和其他项目元数据?普通Haskell开发人员的示例工作流程是stack什么?
使用时stack我通常不会在我的.cabal文件中放置任何版本的边界.我让文件中的resolver和extra-deps设置stack.yaml确定要选择的软件包版本.
这是一个stack.yaml引入reactive-banana-0.8.1.2的文件:
flags: {}
packages:
- '.'
extra-deps:
- reactive-banana-0.8.1.2
- psqueues-0.2.0.2
resolver: lts-2.17
Run Code Online (Sandbox Code Playgroud)
在我的.cabal文件中我只有:
build-depends: base >= 4.7 && < 5, reactive-banana
Run Code Online (Sandbox Code Playgroud)
reactive-banana版本由stack.yaml文件固定.
如果你想使用GHC 7.10将解析器更改为类似的东西nightly-2015-06-17.
我extra-deps通过运行stack build并添加stack.yaml文件中缺少的任何依赖项来迭代地确定迭代,直到满足所有依赖项.
您只需要使用不在Stackage中的软件包(例如reactive-banana).Stackage中有许多常用的软件包,它们的版本将由设置决定resolver.
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |