如何获取堆栈 build/install 以包含资源文件(配置、图像等)

How to get stack build/install to include resource files (configs, images etc.)

在学习堆栈作为开始编写重要 haskell 程序(大于单个文件)的一个步骤后,我 运行 遇到了不知道如何获取的问题堆栈以识别 .ini 文件等。它似乎不适合 .cabal 或 stack.yaml 文件中的任何位置。

澄清一下:在运行宁堆栈build/install之后,生成的.exe文件夹没有资源,所以程序当然会崩溃并出现一堆IO错误(找不到文件)。

有两种选择。我假设您正在寻找的是 data files。为此,您基本上需要:

  1. 将相关文件添加到 .cabal 文件中的 data-files 字段,以便在构建程序包时安装它们
  2. Paths_package_name 模块添加到 .cabal 文件中的 other-modules(将 package_name 替换为您的包名称)
  3. 在需要的地方导入 Paths_* 模块
  4. 使用生成的getDataFileName :: FilePath -> IO FilePath函数获取你需要的数据文件的绝对路径

另一种方法是使用模板 Haskell 将数据文件内容嵌入可执行文件本身,例如 file-embed 包。