perl - ShipIt 与 Dist::Zilla 的优势/劣势是什么?

标签 perl software-distribution dist-zilla

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

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

crossposted at perlmonks

最佳答案

我是 Dist::Zilla 的作者。

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

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

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

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

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

关于perl - ShipIt 与 Dist::Zilla 的优势/劣势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3410108/

相关文章:

python - 如何为网络 python 包安装注册入口点?

xcode - 在 App Store 之外分发 Mac 应用程序。我应该怎么签?

perl - 是否可以使用 Dist::Zilla 的可选依赖项?

regex - 如何检测perl字符串中的某些特殊字符?

ruby - 给定一个 ruby​​ 脚本如何弄清楚它依赖于什么?

perl - 测试使用 Dist::Zilla 的 XS 模块

perl - 在哪里可以找到将现有 CPAN 模块转换为使用 Dist::Zilla 的简明指南?

Perl:在 Moose 类中添加 writer 拒绝属性访问

Perl -- 使用 JSON::RPC::Client 时出现 'Not a HASH reference' 错误

perl - 如何让 perl -c 抛出未定义或未声明的函数错误?