当你浏览META CPAN或者search.cpan.org时, 你会发现有些模块有一个链接指向Github或者其他托管他们项目的地方。
在search.cpan.org上,它是一个在Repository标题旁的文字链接,而Meta CPAN根据存储的类型,它或是一个链接,或是一个Clone repository标题下边的弹出式菜单。 (Github用漂亮的弹出式菜单,私有存储则是简单的链接。)
两个站点都从CPAN发布的模块里所含的元文件获取到版本控制系統的链接。或者是 META.yml,或者是新式的 META.json。(他们只是格式有别。)
元文件通常在作者发布模块的時候自动生成,我这里只演示让四个主要的打包系统包含存储链接。
这个例子中我会以Task::DWIM的存储链接为例, 它是一个实验性模块,包含DWIM Perl发行版里的所有模块。
ExtUtils::MakeMaker
如果你使用 ExtUtils::MakeMaker 把下边这段加到Makefile.PL里作为函数WriteMakefile的参数:
META_MERGE => {
resources => {
repository => 'https://github.com/dwimperl/Task-DWIM',
},
},
如果你的 ExtUtils::MakeMaker 版本不支持这个功能,请升级ExtUtils::MakeMaker。
Module::Build
如果你使用 Module::Build,把下面代码加到Build.PL, 作为 Module::Build->new 调用的参数:
meta_merge => {
resources => {
repository => 'https://github.com/dwimperl/Task-DWIM'
}
},
Module::Install
如果你使用 Module::Install 把下面这段加入到 Makefile.PL:
repository 'https://github.com/dwimperl/Task-DWIM';
Dist::Zilla
如果你使用 Dist::Zilla, Dist::Zilla::Plugin::Repository会自动添加到存储的链接,不过你也可以手动指定。
[MetaResources]
repository.url = https://github.com/dwimperl/Task-DWIM.git
详尽的版本会像下面这个例子一样包含更多细节。 这部分只包含在文件META.json里,而不是META.yml。 要生成这个文件,你需要包含Dist::Zilla的MetaJSON插件。
[MetaResources]
repository.web = https://github.com/dwimperl/Task-DWIM
repository.url = https://github.com/dwimperl/Task-DWIM.git
repository.type = git
[MetaJSON]
Dist::Zilla还有许多其他办法可以添加存储链接到元文件中。
为什么添加这个链接?
道理很简单。 越容易给你模块的最新版本打补丁,你越可能获取它。
另外,你可能已经在最新版本上做了一些改动。你可能改了其他人要改的bug。要是能看到存储,我们能避免重复劳动。
其他资源
如果你已经在做这些了,你也可以加入其它资源。 CPAN 元规范 列出了所有的项目。 如果哪里不清楚,就去问它。
许可证
在另一篇文章中,我演示了 如何把许可证信息加入 CPAN 发行版的元文件中。 如果你有一个公共存储,其他人发补丁就简单了。