【发布时间】:2016-02-26 22:36:13
【问题描述】:
我有一个使用 Stack 创建的旧项目。我想将我的项目从 Stackage 移到最新的 LTS 集。
当我更改 stack.yaml 文件中的解析器时,问题是 .cabal 文件中的 extra-deps 中的版本仍然适用于旧的 LTS 集。有没有办法使用 Stack 自动更新 .cabal 文件中的版本号?
【问题讨论】:
-
如果您使用的是 Stack,为什么您的 cabal 文件中有版本号? (我自己是一个haskell newb,所以这是一个实际的问题,而不是批评)
-
@ChrisMartin 如果要将项目打包为库,则它需要在 cabal 文件中具有适当的依赖范围。
-
我认为在 .cabal 文件中提供一个具有无限依赖关系的库是可以的,只要你也提供一个 stack.yaml 文件。如果你通过 Stackage 分发你的包,构建服务器将继续编译您的项目并检查错误。这还不错。 (而且限制你的依赖项本身并不存在问题。)
-
@haoformayor 运送具有完全无限依赖的包裹被认为是非常糟糕的形式。错误检查仅针对最新的堆栈范围。对于其他所有人,包括可能固定到旧堆栈版本的人,该软件包几乎无法使用。为 all hackage 包推荐的策略是使用包版本策略。由于 stackage 上的库是 hackage 的一个子集,它们也不例外。
-
包已经无法使用;有很多关于无法构建旧包的人的帖子。整件事情,无论是装订的还是堆叠的,都是半生不熟的
标签: haskell haskell-stack