cabal new-sdist 也包含测试文件
cabal new-sdist includes test files as well
我想为我的 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 包中,或者我应该删除它们(如果是 - 如何删除)?
好吧,如果您尝试生成一个仅限库的 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 允许您在发布库之前使用候选包预览它。我会说 upload your source tarball 作为候选包,并仔细检查你的测试没有出现。
我想为我的 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 包中,或者我应该删除它们(如果是 - 如何删除)?
好吧,如果您尝试生成一个仅限库的 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 允许您在发布库之前使用候选包预览它。我会说 upload your source tarball 作为候选包,并仔细检查你的测试没有出现。