如何使用堆栈安装本地创作的 Haskell 模块以供全球使用?
How do I use stack to install locally authored Haskell modules for global usage?
我有一个本地创作的 Haskell 项目,它产生了:
- 二进制可执行文件,以及
- 几个新的 Haskell 模块,我希望我的其他 Haskell 可执行文件可以访问这些模块。
之后:
stack build
stack install
我发现:
- 二进制可执行文件(上面的#1)在任何目录下都可以正常运行。
- 但是,新的 Haskell 模块(上面的#2)只有当我在我的项目目录中 运行 时才能找到! (也就是说,对于上面#1 以外的任何可执行文件。)
我需要能够从任何地方找到新模块。
我怎样才能做到这一点?
每个堆栈项目都在自己的沙箱中,因此编译后的模块只能在该项目内使用。编译的依赖项(来自堆栈快照)有时会在项目之间共享。
请注意,您可以在包列表中列出相对路径,并指向该包。它将再次构建,但可以通过这种方式直接在另一个项目中使用。为什么要加楼? Stack 具有与 cabal-install 不同的项目模型 - 它不允许更改包数据库来影响其他项目的构建方式。
共享此类包的一个选择是将其放在 git 存储库中并使用 https://docs.haskellstack.org/en/stable/custom_snapshot/ ,但那东西还是有点新。
我有一个本地创作的 Haskell 项目,它产生了:
- 二进制可执行文件,以及
- 几个新的 Haskell 模块,我希望我的其他 Haskell 可执行文件可以访问这些模块。
之后:
stack build
stack install
我发现:
- 二进制可执行文件(上面的#1)在任何目录下都可以正常运行。
- 但是,新的 Haskell 模块(上面的#2)只有当我在我的项目目录中 运行 时才能找到! (也就是说,对于上面#1 以外的任何可执行文件。)
我需要能够从任何地方找到新模块。 我怎样才能做到这一点?
每个堆栈项目都在自己的沙箱中,因此编译后的模块只能在该项目内使用。编译的依赖项(来自堆栈快照)有时会在项目之间共享。
请注意,您可以在包列表中列出相对路径,并指向该包。它将再次构建,但可以通过这种方式直接在另一个项目中使用。为什么要加楼? Stack 具有与 cabal-install 不同的项目模型 - 它不允许更改包数据库来影响其他项目的构建方式。
共享此类包的一个选择是将其放在 git 存储库中并使用 https://docs.haskellstack.org/en/stable/custom_snapshot/ ,但那东西还是有点新。