29

我试图了解如何使用stack 和 stackage.org。当我第一次安装并使用它时,stackage.org 位于 LTS-3.8(“解析器”)。从那时起,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 版本怎么办?

4

1 回答 1

31

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

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

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

使用例如stack new projectname --resolver=lts-3.11为新项目设置解析器。堆栈默认为您已经在使用的最新 LTS 快照,因此一旦您有一个具有最新 LTS 的项目,未来的新项目也会效仿。

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

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

于 2015-10-31T02:23:12.613 回答