几个月前我开始使用Dist::Zilla。但是,在YAPC :: NA,有人提到他们使用ShipIt代替。然后今天我在miyagawa的cpanminus directory on github注意到了一个.shipit文件,所以我决定再研究一下......
我最初的印象是ShipIt有Dist :: Zilla可用的子集,但我不想妄下结论。那么,对于那些有过两者经验的人来说,ShipIt vs Dist::Zilla的优点/缺点是什么?
答案 0 :(得分:7)
我是Dist :: Zilla的作者。
在选择继续编写Dist :: Zilla之前,我对ShipIt进行了非常广泛的评估,最初它们几乎涵盖了相同的问题空间:完成构建和上传CPAN发行版的所有无聊工作。除了ShipIt之外,Dist :: Zilla现在拥有的所有功能都是后来添加的,或多或少。
如果您只需要ShipIt的功能,我仍然建议您强烈考虑Dist :: Zilla,原因很简单:可黑客攻击。如果我能够不写一些新的东西,我会使用ShipIt,但我发现它没有被记录,很难扩展。它的插件不够通用,核心行为对你的工作方式做了太多假设。
Dist :: Zilla的灵感来自于这个问题:它将所有内容都变成了一个插件,每个插件都有一个非常非常小的界面,因此它的假设会被强制限制。
ShipIt优于Dist :: Zilla的一个好处是,ShipIt(据我所知)没有任何插件可以改变您实际编写代码的方式。这意味着您的文档看起来仍然相同,您仍然会有Makefile.PL
,依此类推。一些黑客不喜欢这么多基于DZ的dists从根本上改变了如何从源库中测试和构建CPAN代码的假设。 ShipIt永远不会改变它。
可以避免在Dist :: Zilla中使用任何此类插件,但一般来说,我的经验是人们做几乎总是以某种形式使用它们。
答案 1 :(得分:4)
据我所知,我最初的印象是正确的。
ShipIt为发布发行版提供了功能:
默认情况下,Dist :: Zilla提供使用单个命令(即dzil release
)将分发上载到CPAN的功能。 Dist :: Zilla还具有创建新发行版(即dzil new My::New::Module
)的功能。它还会自动生成我过去必须手工维护的许多文件
使用插件,Dist :: Zilla似乎能够提供ShipIt提供的大部分(如果不是全部)功能。使用插件添加全新功能也相对容易。