如何使用堆栈处理单个文件?
How to work with single file using stack?
当我使用单个文件 haskell 代码时,没有项目,我只能依赖 base
包并导入它的模块,但是当我想从其他包导入模块时,我必须创建一个新项目并编辑它的 package.yaml
并将项目添加到 dependencies
,这些工作对于单个文件来说太重了。
我能否将我最常用的 dependencies
列表放到某个地方,以便当我通过 stack exec -- ghci my-file.hs
加载单个文件时它会正确找到我导入的模块?
有几个选项:
The --package
flag,用于临时调用;
The global project (see also this answer),默认配置位于 ~/.stack/global-project/stack.yaml
(或 OS 的相应路径),在实际项目之外工作时会启动;和
Stack scripts,相当于在源文件顶部放置一个 header 指定 Stack 调用,如本例取自文档...
#!/usr/bin/env stack
{- stack
script
--resolver lts-6.25
--package turtle
--package "stm async"
--package http-client,http-conduit
-}
...当你想要一些便携的东西时,这很有用。
当我使用单个文件 haskell 代码时,没有项目,我只能依赖 base
包并导入它的模块,但是当我想从其他包导入模块时,我必须创建一个新项目并编辑它的 package.yaml
并将项目添加到 dependencies
,这些工作对于单个文件来说太重了。
我能否将我最常用的 dependencies
列表放到某个地方,以便当我通过 stack exec -- ghci my-file.hs
加载单个文件时它会正确找到我导入的模块?
有几个选项:
The
--package
flag,用于临时调用;The global project (see also this answer),默认配置位于
~/.stack/global-project/stack.yaml
(或 OS 的相应路径),在实际项目之外工作时会启动;和Stack scripts,相当于在源文件顶部放置一个 header 指定 Stack 调用,如本例取自文档...
#!/usr/bin/env stack {- stack script --resolver lts-6.25 --package turtle --package "stm async" --package http-client,http-conduit -}
...当你想要一些便携的东西时,这很有用。