你會看到有些在 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 請把下面這段當做丟給 WriteMakefile 函式的參數加入你的 Makefile.PL
META_MERGE => {
resources => {
repository => 'https://github.com/dwimperl/Task-DWIM',
},
},
如果你的 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 plugin
[MetaResources]
repository.web = https://github.com/dwimperl/Task-DWIM
repository.url = https://github.com/dwimperl/Task-DWIM.git
repository.type = git
[MetaJSON]
Dist::Zilla.還有許多其他方式可以 把倉儲連結加入元文件中
為什麼我需要加入此連結
簡單。越容易發送補丁給你的模組,你越容易得到補丁。
還有,從最後一次發佈後,你也許已經對你的模組做了許多修改。 你也許已經修正許多他人想修正的臭蟲。如果我們可以瀏覽你的倉儲,會避免工作重複。
其他資源
如果你已經做到這些,你也可以加入其他資源。 這份 CPAN 元規格 列出了所有項目。 如果哪裡不清楚,問就對了。
許可證
在另一篇文章中,我說明了 如何把許可證資訊加入 CPAN 模組的元文件中。 如果你有一個公開倉儲,這樣讓其他人比較容易發送補丁。