【问题标题】:Is it possible to output a static file in bin when building with Cabal or Stack?使用 Cabal 或 Stack 构建时是否可以在 bin 中输出静态文件?
【发布时间】:2019-04-12 20:24:52
【问题描述】:

我想在构建输出旁边输出静态 html 文件(向我的 Haskell 程序提供对这些文件的访问权限)。

这是我目前的项目结构:

MyProject/FrontEnd -- contains static html, js and css files.
MyProject/Backend -- contains the stack Haskell project

我希望当我在 Backend 目录中运行 stack build 时,它会构建我的 Haskell 项目,然后复制 Frontend 目录并将其与我的可执行文件一起放入构建输出中。

我对 Cabal 或 Stack 不是很熟悉,但我主要查看了 cabal 文档,发现有 data-dir 参数,看起来它可以满足我的要求,但即使添加: data-dir: ..\Frontend 在我的 cabal 文件中,我收到以下警告: data-dir: ..\Frontend' is a relative path outside of the source tree. This will not work when generating a tarball with 'sdist'. 并且文件不存在于输出中。

我在 Stack 中没有看到类似的标志。

有可能做我想做的事吗?或者我将不得不创建自己的脚本来为我执行此操作(调用堆栈构建,然后手动输出文件)?

【问题讨论】:

  • 将您的 cabal 文件移动到 MyProject(并根据需要调整所有引用)会将 MyProject/Frontend 带入源代码树,从而避免该错误消息中指出的问题。 (我已经成功地将data-dirdata-files 用于我的项目。)
  • 我想避免这样做,但看起来这将是我最好的选择,谢谢。

标签: haskell cabal haskell-stack


【解决方案1】:

您可以使用 file-embed 包来使用 Template Haskell 将文件或目录的内容直接嵌入到您的可执行文件中。例如,wai-app-static 使用它来创建一个自包含的静态文件服务器(如果需要)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 2021-01-07
    • 2012-04-26
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多