我正在尝试cabal-dev
一个我正在做的项目;该项目是一个库,并且cabal-dev
在构建它的沙盒版本方面做得很好 - 但我的部分工作流程遇到了麻烦......
我有一个脚本 ,我会加载scratch.hs
它(pre- )来尝试一些东西。当然,内容会随着时间的推移而变化,这取决于我正在开发的功能。 不是库代码库的一部分,它只是我在处理它时的个人暂存空间。cabal-dev
ghci
scratch.hs
scratch.hs
现在,为了在ghci
我的沙箱加载的情况下进行会话,我可以cabal-dev ghci
, 然后加载scratch.hs
到其中。问题是这(通过设计,并且明智地)排除了我的用户包数据库,所以如果scratch.hs
从不在我的库中的包中引用模块build-depends
(这不是不合理的 - 毕竟它不是库的一部分),那些包是'不可见,所以我得到一个错误,例如:
scripts/scratch.hs:8:8:
Could not find module `Data.Aeson.Generic':
It is a member of the hidden package `aeson-0.3.2.11'.
Perhaps you need to add `aeson' to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
在这种情况下,scratch.hs
想要导入Data.Aeson.Generic
但aeson
不在我的库中build-depends
(非常正确),但在我的用户包数据库中。
那么我该如何解决这个问题呢?我可以想象这些类别中的任何一个的答案,但也许有些类别我错过了:
一种(有选择地)将我的用户包数据库中的包与由
cabal-dev
. (也许滚动我自己的cabal-dev ghci
风格脚本?)关于如何改进我的工作流程以使问题消失的建议。
我知道我可以在全球范围内安装软件包,但我不愿意以这种方式污染我的全球软件包数据库(并且cabal-dev
明确地不鼓励这样做)。
非常感谢所有的建议。