首页 文章

了解Haskell的堆栈程序以及解析器和LTS版本

提问于
浏览
20

我想了解如何使用stack and stackage.org . 当我第一次安装并使用它时,stackage.org处于LTS-3.8("resolver") . 从那以后,stackage.org现在有了LTS-3.11 .

首先,我想确认一下这意味着什么 . Stackage是一个包的存储库,对于特定的LTS版本(例如3.8),包已经过验证可以协同工作 . 所以LTS-3.8的包装一起工作,LTS-3.11的包也可以一起工作 . 继续 ...

当我运行 stack new projectname 时,堆栈告诉我:

Checking against build plan lts-3.8
Selected resolver: lts-3.8

这是否意味着该项目已设置为仅使用在LTS-3.8下验证的软件包和版本?

如果我现在想要开始一个新项目并希望在新项目中使用最新的LTS版本,我如何告诉堆栈默认执行此操作?

如果我想“升级”旧项目以使用新的LTS版本呢?

1 回答

  • 20

    这是否意味着该项目已设置为仅使用在LTS-3.8下验证的软件包和版本?

    究竟 . (如果您需要未包含在LTS 3.8集中的软件包,您可以通过 stack.yamlextra-deps 部分指定它们 . stack将从Hackage中获取它们并为您的项目单独安装它们,而不会影响LTS快照或其他项目 . )

    如果我现在想要开始一个新项目并希望在新项目中使用最新的LTS版本,我如何告诉堆栈默认执行此操作?

    使用例如 stack new projectname --resolver=lts-3.11 为新项目设置解析程序 . 堆栈默认为您已经使用的最新LTS快照,因此一旦您拥有了最新LTS的项目,未来的新项目将会效仿 .

    如果我想“升级”旧项目以使用新的LTS版本怎么办?

    更改 stack.yaml 文件中的 resolver 字段 . 更改将在下次构建项目时生效 .

相关问题