2016-02-26 60 views
4

我有一个我用Stack创建的旧项目。我想将我的项目移动到Stackage提供的最新LTS。如何使用Stack更新.cabal文件?

当我更改stack.yaml文件中的解析器时,问题在于.cabal文件中extra-deps中的版本仍旧用于旧LTS集。有没有办法使用Stack自动更新.cabal文件中的版本号?

+0

如果你使用Stack,你为什么在cabal文件中有版本号? (我自己是一个haskell newb,所以这是一个真正的问题,而不是批评) –

+1

@ChrisMartin如果你想把一个项目打包成一个库,它需要在cabal文件中有适当的依赖范围。 – sclv

+0

我认为在.cabal文件中发布一个带有无限依赖的库是很好的,只要你发布了一个stack.yaml文件。如果你通过Stackage发布你的包,构建服务器将继续编译你的项目并检查错误。这很好。 (并不像你的依赖没有自己的问题。) – hao

回答

0

您可以简单地删除cabal文件中build-depends的(上限)(的一部分)。

当涉及到分发你的软件包时,如果你使用了--pvp-bounds标志,堆栈可以自动添加依赖边界。 stack sdist --pvp-bounds upper,stack upload --pvp-bounds both

有这个功能blog post by Michael Snoyman