我正在使用 stack
在 Haskell 中构建一个项目,并且需要更新我的项目所依赖的库之一 - 我们称之为otherlib
。
我已经分叉了otherlib
并进行了所需的更改,增加了版本号(我们称我的版本 0.9.1(,使用 cabal
构建它(这是该项目使用的(,并运行 cabal install otherlib
将我修改后的版本放入本地缓存中。现在我想尽可能合理地将其包含在我自己的项目中。
我对otherlib
所做的更改(IMO(非常合理,一旦我创建了PR,就有机会被维护者接受。但与此同时,我有一个版本不在stack
的解决方案集中。
在我的package.yaml
依赖项中包含otherlib-0.9.1
不起作用,将其添加到我的stack.yaml
extra-deps
中也不起作用。
有没有设置它的好方法?
您可以在 stack.yaml extra-deps
指定 Git 存储库(及其修订版(。
下面是文档中的示例:
extra-deps:
- git: git@github.com:yesodweb/wai
commit: 2f8a8e1b771829f4a8a77c0111352ce45a14c30f
subdirs:
- auto-update
- wai
注意 仅当存储库包含多个包(如 yesodweb(时,才需要subdirs
。
除了山本雄二的正确准确答案外,我发现我还可以从otherlib
目录直接将符号链接添加到我自己项目的基目录中,并将其名称添加到stack.yaml
packages
中。具体来说,修改后的部分如下:
packages:
- .
- otherlib-0.9.1
..目录本身也称为otherlib-0.9.1
.
此解决方案适用于 otherlib 在本地文件系统之外的任何地方尚不可用的情况。