【问题标题】:SBT-like features in the Haskell build ecosystemHaskell 构建生态系统中的类似 SBT 的功能
【发布时间】:2014-10-05 15:29:55
【问题描述】:

我最近一直在使用带有 SBT 的 Scala。 REPL 循环有一个方便的功能:~ COMMAND,意思是对项目中的每个源文件更改执行命令。例如:

~ test

~ compile

非常对快速开发很有用。我想知道,有没有人知道 Haskell 类似的东西,一个阴谋集团的外壳,也许?

【问题讨论】:

    标签: scala haskell sbt cabal


    【解决方案1】:

    您可以使用inotifywait 轻松获得类似的东西。

    只需在您的项目目录中启动一个终端并运行以下内容:

    $ while inotifywait -qq -r -e modify .; do cabal build && ./dist/build/tests/tests; done
    

    这也适用于任何其他语言;只需插入您选择的构建命令。

    【讨论】:

    • 它的 2021 年,这仍然是比 ghcid 更好的选择,因为它没有做任何事情来克服 ghc 缺乏对多个组件的支持。 IE ghcid 可以观看 just 测试,但是如果 src 文件发生变化,它不会捕捉到它;仅当测试文件更改时。
    【解决方案2】:

    您可以编写 ghci 脚本来定义您自己的命令和扩充现有命令。为此:

    有关 GHCi :def 命令的更多信息是 here

    【讨论】:

    • 我认为这有点偏离目标。目的是循环在源更改时触发的任意 cabal 命令;通过 GHCi 实现这一目标似乎是落后的。例如,GHCi 对“阴谋集团测试”了解多少?相当于 SBT 的“cabal-shell”比重新调整的 GHCi 宏要多一些; cabal 比 GHCi 拥有更多关于该项目的信息,不是吗?谢谢你的资源,都一样。
    • 啊,好的。所以这有点不同。是的,用 inotify 和 cabal build 连接一些东西可能很有趣。
    【解决方案3】:

    ghcid 项目提供的内容仅限于~ :reload。它提供了一些额外的功能(格式化为固定的行数,从以前加载的文件中保留警告),但不是运行任何命令的通用性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多