На Github огромное количество крутейших Laravel-пакетов с открытым кодом. Но у опенсорса есть проблема — зачастую такие пакеты остаются без поддержки, так как это не оплачиваемая работа.
Laravel развивается очень быстро. Мажорные версии выпускаются каждые полгода. И это вызывает дополнительную нагрузку на мейнтейнеров. Вы можете столкнуться с ситуацией, когда пакет уже не совместим с последней версией фреймворка. В этом случае вы можете сделать форк. Я расскажу как форкнуть устаревший пакет и как его мейнтейнить.
Например, в вашем композере в секции require
есть такой пакет:
"require": { "tokenly/laravel-vault": "^0.2.3", }
Как вы видите, пакет не поддерживается, а последний релиз был несколько лет назад. Посмотрите имеющиеся форки, возможно кто-то уже занялся его поддержкой.
Если же нет, то вы должны создать свой форк. Просто нажмите на кнопку Forks и следуйте инструкциям. Теперь вы увидите тот же код, но под своим именем.
Следующим шагом клонируем код в свой проект. Я предпочитаю делать это в каталог с пакетами.
git clone git@github.com:tenantcloud/laravel-vault.git packages/Tenantcloud/LaravelVault
Чтобы иметь возможность работать с исходным кодом, вы должны сделать несколько настроек. Отредактируйте ваш основной composer.json
. Это заставит композитора взять пакет tenantcloud/laravel-vault
из локальной папки по символической ссылке
"repositories": [ { "type": "path", "url": "packages/TenantCloud/LaravelVault" } ], "require": { "tenantcloud/laravel-vault": "*", },
Также отредактируйте в composer.json
название пакета, вставив новое tenantcloud/laravel-vault
вместо старого tokenly/laravel-vault
{ "name": "tenantcloud/laravel-vault" }
Запустите команду composer update
и вы увидите символическую ссылку в вашей папке vendors/tenantcloud
.
Теперь вы можете редактировать код, тестировать его в своем проекте и пушить на GitHub.
Следующий шаг — опубликуем новый релиз на GitHub.
Далее вы можете опубликовать его на Packagist (вот подробная инструкция (шаг 3): https://laravel.demiart.ru/package-development/ )
После этого нужно отредактировать composer.json
. Удаляем это
"repositories": [ { "type": "path", "url": "packages/TenantCloud/LaravelVault" } ],
И обновляем блок require
своей новой версией
"require": { "tenantcloud/laravel-vault": "^0.2.4", },
Снова запускаем composer update
. Символическая ссылка заменится Github-кодом.
Вы можете оставить каталог с вашим пакетом или удалить его, если он вам не нужен.
Наслаждайтесь форками и делайте вклад в открытый код!
Автор: Ivan Kolodiy
Перевод: Алексей Широков
Наш Телеграм-канал — следите за новостями о Laravel.