You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Stack本地安装Hackage包供stack runhaskell使用?

最简单的方案:使用Stack的脚本模式(Script Mode)

我刚好有过类似的需求,Stack自带的脚本模式完美解决了这个问题——它既允许你显式声明依赖,又不用创建完整的Cabal项目,完全适配stack runhaskell的工作流。

具体操作非常简单:

  • 在你的脚本文件(比如one-of-the-scripts.hs)最顶部添加两行特殊注释,用来告诉Stack需要的依赖:
#!/usr/bin/env stack
-- stack script --package regex-posix
  • 接下来正常写你的Haskell代码就行,包括import Text.Regex.Posix这类依赖导入。

之后运行脚本的方式和你之前想的一样:

stack runhaskell one-of-the-scripts.hs

如果你的脚本需要多个Hackage包,只要在--package后面用空格分隔添加即可,比如:

-- stack script --package regex-posix --package text --package containers

额外的实用技巧

  • 如果你想固定GHC版本和依赖版本,避免不同环境下的兼容性问题,可以加上指定解析器的参数:
-- stack script --resolver lts-20.10 --package regex-posix

(lts-20.10是一个示例版本,你可以换成适合自己的LTS版本)

  • 给脚本添加执行权限后(chmod +x one-of-the-scripts.hs),甚至可以直接用./one-of-the-scripts.hs运行,不需要每次敲stack runhaskell。

这个方案完全满足你的需求:依赖显式写在脚本里,不用额外配置文件,全程用Stack,不用切换到Cabal,第一次运行时Stack会自动下载并安装所需的依赖,之后再运行就快很多了。

内容的提问来源于stack exchange,提问作者LudvigH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:04:17