Каковы сильные / слабые стороны ShipIt vs Dist::Zilla?
Я начал использовать Dist::Zilla несколько месяцев назад. Однако в YAPC::NA кто-то упомянул, что они используют ShipIt вместо этого. Затем сегодня я заметил файл.shipit в каталоге cpanminus miyagawa на github, поэтому я решил изучить его еще...
У меня первоначальное впечатление, что у ShipIt есть подмножество того, что доступно с Dist::Zilla, но я не хочу делать поспешные выводы. Итак, каковы сильные и слабые стороны ShipIt vs Dist::Zilla для тех, кто имел опыт работы с обоими?
2 ответа
Я автор Dist::Zilla.
Я довольно тщательно оценил ShipIt, прежде чем пойти дальше и написать Dist::Zilla, и изначально они охватывали почти точно то же самое проблемное пространство: выполняли всю скучную тяжелую работу по созданию и загрузке дистрибутива CPAN. Все функции, которые Dist:: Zilla теперь имеет за пределами ShipIt, являются более поздними дополнениями, более или менее.
Если вам нужны только функции ShipIt, я все же советую вам строго рассмотреть Dist:: Zilla по одной очень простой причине: возможность взлома. Если бы я был в состоянии не написать что-то новое, я бы использовал ShipIt, но я обнаружил, что он недостаточно документирован и его сложно расширять. Его плагины не были достаточно универсальными, а основное поведение делало слишком много предположений о том, как вы хотели бы работать.
Dist:: Zilla был вдохновлен именно этой проблемой: он превратил все в плагин, и каждый плагин получил очень, очень маленький интерфейс, чтобы его предположения были принудительно ограничены.
Одно из преимуществ ShipIt по сравнению с Dist:: Zilla заключается в том, что ShipIt не имеет (насколько мне известно) никаких плагинов, которые бы изменили способ написания вашего кода. Это означает, что ваша документация будет выглядеть так же, у вас все равно будет Makefile.PL
, и так далее. Некоторым хакерам не нравится, что так много дисков, основанных на DZ, в корне меняют представления о том, как тестировать и создавать код CPAN из его исходного репозитория. ShipIt никогда не изменит это.
Можно избежать использования любых таких плагинов с Dist::Zilla, но в целом мой опыт показывает, что люди используют их, почти всегда, в той или иной форме.
Насколько я могу судить, мои первые впечатления были правильными.
ShipIt предоставляет функциональность для выпуска дистрибутивов:
- отслеживание номеров версий
- интеграция с контролем версий
- загрузка в CPAN
- отображение файла журнала изменений в редакторе, чтобы вы могли редактировать его перед выпуском.
По умолчанию Dist::Zilla предоставляет возможность загружать дистрибутивы в CPAN с помощью одной команды (т.е. dzil release
). Dist::Zilla также имеет функциональность для создания новых дистрибутивов (т.е. dzil new My::New::Module
). Он также автоматически генерирует так много файлов, которые мне приходилось поддерживать вручную.
Используя плагины, Dist::Zilla может предоставить большую часть, если не всю, функциональность, доступную в ShipIt. Также относительно легко добавлять новые функции с помощью плагинов.