使用 Stack 安装本地包

Installing local package with Stack

是否可以从类似于 stack build package-name 的源安装软件包? (Stackage 上带有包的字母词,但不带有自定义包)

嗯,stack build(在源目录中)?

Stack 实际上并没有安装 库的概念,它只安装可执行文件。要“安装”本地来源的软件包,您需要指定 您希望安装它们的目的 :通过 location: 中的 location: 字段将它们作为依赖项添加到另一个项目13=] 该项目的 stack.yaml 文件中的字段。

这可以说是明智的,因为有人可能会说,除了在另一个 Haskell 项目(或在 REPL 中,您可以使用 stack ghci 调用它之外,您无法对已安装的库执行任何操作).不过,我个人并不认同这一点,我喜欢能够说 现在安装该库 。这是我一直坚持使用老式 cabal-install 而不是 Stack 的原因之一。这样,您就可以

cabal install

从源目录中。

Cabal-install 经常受到批评:它的本地安装很容易失去同步,然后你会遇到奇怪的依赖冲突,需要重建很多东西。我从来没有发现这个 那么多 的问题,无论如何,最近的 Cabal 通过 Nix-style builds 解决了这个问题,这不会产生冲突。