为什么堆栈重写我的 .cabal 文件并丢弃我的编辑以添加新的依赖项?

Why is stack rewriting my .cabal file and throwing away my edits to add a new dependency?

堆栈突然出现异常。我创建了一个新项目,编写了一些代码,需要一个新的依赖项(容器,以获得 Data.Map.Strict),所以我编辑了我的项目 .cabal 文件以添加依赖项,现在堆栈正在重写我的 .cabal 文件以丢弃我的编辑(这使得构建失败)。

我错过了什么愚蠢的简单事情?

(我做了我必须做的事情 git 并重新开始。)

rm -fr Problem032
stack new Problem032
cd Problem032
stack setup
stack build
stack exec Problem032-exe

一切正常。但是后来...

vi Problem032.cabal 

将“,containers”添加到 lib build-depends

cd src
git checkout -- Lib.hs

找回旧的损坏代码

cd ..
stack build

导致我的 .cabal 文件被重写(失去新的依赖项)然后构建失败。

这是因为默认堆栈模板现在使用 hpack 进行包描述。您可以删除 package.yaml 或编辑它。刚刚发布的 Stack 1.6.1 在这种情况下表现得更好。