堆栈如何决定依赖关系?



我刚刚做了一个分支来修复html-conduit中的一个错误,我的模板库依赖于它。我维护一个依赖于该模板库的应用程序。

因此,我更新了库的stack.yaml以指向分叉:

extra-deps:
[...]
- git: https://github.com/emhoracek/xml.git
commit: 3e1bd12882d7c452d76e39e1db1b95577f38d4d7
subdirs:
- xml-conduit
- html-conduit

并编写了一个测试以确保更新该依赖项修复了该错误。它做到了!耶。

然后我更新了我的应用程序以指向更新的模板库:

packages:
[...]
- location:
git: https://github.com/positiondev/larceny
commit: ba743c58ff4ac2606f67336e5e557deacb416ed8
extra-dep: true

我检查以确保这修复了我的应用程序中的错误,但没有。直到我将我的html-conduit分支添加到我应用程序的额外部门之前,它仍然存在错误。

这是怎么回事?为什么 Stack 在决定我的应用应使用哪个版本时不使用我在库stack.yaml中指定的html-conduit版本?

任何stack命令都只引用单个stack.yaml文件 - 当前目录中的文件,或者可能是某个父目录中的文件。 您依赖的库不需要具有stack.yaml文件,如果存在,则会忽略该文件。

这使版本规范保持简单。 对于处理两个stack.yaml文件请求同一库的不同版本的情况,没有规则,因为没有生成会引用两个stack.yaml文件。

另一方面,会查阅每个库的.cabal文件,因此如果某些.cabal文件需要stack.yaml未指定版本的库,或者如果.cabal中的版本边界与stack.yaml中的特定版本不匹配,则会在构建的早期收到错误。

相关内容

  • 没有找到相关文章

最新更新