让我们说我正在构建一个使用haskell作为服务器端和客户端代码的Web应用程序。在构建阶段,我想用ghc
编译服务器端代码,用一些haskell到js的转换器编译客户端代码。
haskell转换器工具公开了我需要提供.hs
文件的可执行文件,它将编译为.js
个文件。如何在cabal中指定在构建阶段运行外部程序?我可以看到,UserHooks
字段buildHook
的返回类型为IO()
,所以理论上我可以使用shelly库来执行shell代码来运行转换器,但我不是&# 39;不知道这是否是最干净的解决方案。
答案 0 :(得分:1)
Here's a post我写过关于解决同样问题的文章。
使用自定义安装文件通常是一个坏主意,因为无法处理它的依赖关系,除非您先安装这些依赖项,否则您甚至无法sdist
。
我发现有一个可选的命令行选项可以在网络服务器启动时预编译代码。
另一种选择是拥有一个可以编译两者的makefile。