Как воскресить брошеный Github-проект

На Github огромное количество крутейших Laravel-пакетов с открытым кодом. Но у опенсорса есть проблема — зачастую такие пакеты остаются без поддержки, так как это не оплачиваемая работа.

Laravel развивается очень быстро. Мажорные версии выпускаются каждые полгода. И это вызывает дополнительную нагрузку на мейнтейнеров. Вы можете столкнуться с ситуацией, когда пакет уже не совместим с последней версией фреймворка. В этом случае вы можете сделать форк. Я расскажу как форкнуть устаревший пакет и как его мейнтейнить.

Например, в вашем композере в секции require есть такой пакет:

"require": {
   "tokenly/laravel-vault": "^0.2.3",
}

Как вы видите, пакет не поддерживается, а последний релиз был несколько лет назад. Посмотрите имеющиеся форки, возможно кто-то уже занялся его поддержкой.

Устаревший github пакет

Если же нет, то вы должны создать свой форк. Просто нажмите на кнопку Forks и следуйте инструкциям. Теперь вы увидите тот же код, но под своим именем.

Форкаем проект на Guthub

Следующим шагом клонируем код в свой проект. Я предпочитаю делать это в каталог с пакетами.

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.

Пушим изменения на 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
Перевод: Demiurge Ash

Наши Телеграм и Вконтакте — следите за выходом новых статей через наши каналы.

Задать вопросы по урокам можно на нашем форуме.