10

几个月前我开始使用Dist::Zilla 。然而,在 YAPC::NA 有人提到他们使用ShipIt。然后今天我注意到github 上 miyagawa 的 cpanminus 目录中有一个 .shipit 文件,所以我决定再研究一下......

我最初的印象是 ShipIt 具有 Dist::Zilla 可用功能的一个子集,但我不想草率下结论。那么,对于那些在这两个方面都有经验的人来说,ShipItDist::Zilla的优势/劣势是什么?

在perlmonks交叉发布

4

2 回答 2

7

我是 Dist::Zilla 的作者。

在选择继续编写 Dist::Zilla 之前,我对 ShipIt 进行了相当广泛的评估,最初它们涵盖了几乎完全相同的问题空间:完成构建和上传 CPAN 发行版的所有无聊的繁重工作。Dist::Zilla 现在除了 ShipIt 之外的所有功能,或多或少都是后来添加的。

如果您只需要 ShipIt 的功能,我仍然建议您强烈考虑 Dist::Zilla,原因很简单:可破解性。如果我不能写新的东西,我会使用 ShipIt,但我发现它的文档不足且难以扩展。它的插件不够通用,并且核心行为对您希望如何工作做出了太多假设。

Dist::Zilla 特别受到这个问题的启发:它将所有东西都变成了一个插件,并且每个插件都被赋予了一个非常非常小的接口,这样它的假设就会受到强制限制。

ShipIt 优于 Dist::Zilla 的一个好处是 ShipIt(据我所知)没有插件可以改变您实际编写代码的方式。这意味着您的文档看起来仍然是一样的,您仍然会有一个Makefile.PL,依此类推。一些黑客不喜欢这么多基于 DZ 的 dist 从根本上改变了如何从其源存储库测试和构建 CPAN 代码的假设。ShipIt 永远不会改变这一点。

可以避免在 Dist::Zilla 中使用任何此类插件,但总的来说,我的经验是人们几乎总是以一种或另一种形式使用它们。

于 2011-05-05T13:58:11.117 回答
4

据我所知,我最初的印象是正确的。

ShipIt 提供发布发行版的功能:

  • 跟踪版本号
  • 与版本控制集成
  • 上传到 CPAN
  • 在编辑器中显示更改日志文件,以便您可以在发布前对其进行编辑。


默认情况下,Dist::Zilla 提供了使用单个命令(即dzil release)将分发上传到 CPAN 的能力。Dist::Zilla 还具有创建新发行版(即dzil new My::New::Module)的功能。它还会自动生成许多我过去必须手动维护的文件。

使用插件,Dist::Zilla 似乎能够提供大部分(如果不是全部)ShipIt 可用的功能。使用插件添加全新功能也相对容易。

于 2010-08-10T21:18:47.567 回答