如何使用兄弟 Stack 项目?

How to use sibling Stack projects?

我有一个项目结构如下:

- proj/
  - subproj1/
    - stack.yaml
    - subproj1.cabal
    - ...
  - subproj2/
    - stack.yaml
    - pkg1/
      - ...
    - pkg2/
      - ...
    - ...

我的 subproj1/stack.yaml 文件包含:

packages:
- .
- location: ../subproj2
  subdirs:
  - pkg1
  - pkg2
  extra-dep: true

当 运行 "stack build" 来自 subproj1/ 目录时,我注意到构建行为不一致。而且我想知道我是否以一种固有的不稳定方式设置了我的项目结构。例如,使用位于 proj/ 目录中的单个 stack.yaml 文件会更稳定吗?

是的,很遗憾,此设置存在一些已知问题 - https://github.com/commercialhaskell/stack/issues/3130。希望会在某个时候得到修复!解决此问题的一种方法是设置您的 STACK_YAML 环境变量,这样堆栈调用将忽略当前目录。