0

我想为我的 Haskell 项目创建一个 sdist 包。为简单起见,我们假设以下项目结构:

/ root
  | src
    | MyLib.hs
  | test
    | MyLibTest.hs
  | Changelog.md
  | MyProject.cabal
  | LICENSE

cabal 文件中定义了两个目标

library
  exposed-modules:    MyLib
  hs-source-dirs:     src
  -- ...

test-suite: MyProject-test
  type:               exitcode-stdio-1.0
  hs-source-dirs:     test
  main-is:            MyLibTest.hs
  -- ...

当我执行时,cabal new-sdist --list-only我得到以下列表:

./changelog.md
./MyProject.cabal
./LICENSE
./src/MyLib.hs
./test/MyLibTest.hs

我的问题:是否可以在 sdist 包中包含与测试相关的文件,或者我应该删除它们(如果是 - 如何)?

4

1 回答 1

1

好吧,如果您尝试生成仅限库的 sdist,则会收到以下错误:

$ cabal new-sdist --list-only <library-name>
cabal: The component library cannot be packaged for distribution on its own.
Only entire packages may be packaged for distribution.

所以我会说建议上传整个内容。

Hackage 可以让你在发布之前预览一个库,使用候选包。我会说将您的源 tarball作为候选包上传,并仔细检查您的测试是否显示。

于 2021-02-08T15:47:24.003 回答