2

我正在创建一个 Perl 5 模块分发版,其源代码托管在 github 上。我在这个问题中遇到了与用户 Anirvan 相同的问题:我希望 github 看到一个README.md文件,但.tar.gz要包含与plain相同README的文件。在这种情况下,这个问题的答案“README.pod两者都使用”有效,但我想知道我是否可以让我最初的尝试奏效:

  • 我只有README.md在存储库中,没有README.
  • 我的MANIFEST包含README(因为它进入了 tarball),但不是README.md(因为它不是)。
  • 我的MANIFEST.SKIPcontains README.md,因为我不想在 tarball 中使用它。
  • 我的Makefile.PL(*) 在将 复制到文件PL_FILES的短脚本下有一个条目README.mdREADME

这会生成README, 但在此过程中:

  • t/manifest.t没有清单中的make抱怨,但缺少README
  • perl Makefile.PL还抱怨README失踪

我是误解了MANIFEST文件的目的还是这个测试?是否可以以某种方式表示应该打包的文件,但还没有?我已经尝试更改测试,但我只能找到一种方法Test::CheckManifest来忽略存在但“不应该”的文件,而不是忽略不存在但“应该”的文件。

(*) 是的,我正在使用ExtUtils::MakeMaker,因为这是module-starter默认设置,并且它到目前为止有效。不过,我不确定其他工具是否会发生很大变化。

4

1 回答 1

0

(在这里回答我自己的问题):,ExtUtils::MakeMaker其他Module::Build主要是安装方法。您应该忽略 whatmake以及Build其他人在构建发行版时抱怨的内容。make disttest抱怨才是最重要的。

就此而言,不要放置代码来帮助构建您的发行版Makefile.PL。您应该只在其中放置要在安装期间运行的代码。所以如果你想README.md成为README,你最好README.md也分配。这显然不是你想要的(*)。

相反,看看Dist::Zilla。这显然是一个分发创建系统,而不是一个安装系统。

(*) 回答你自己的问题会变得非常奇怪...... :-/

于 2013-02-28T18:51:16.410 回答