Как создать с помощью Github ваш первый пакет для композитора / packagist PSR-4 и опубликовать его в Packagist

Composer — это инструмент для управления зависимостями в PHP, он позволяет вам объявить библиотеки, от которых зависит ваш проект, и он будет управлять (устанавливать или обновлять) их для вас. Многие проекты и фреймворки используют composer для управления зависимостями. Но эти пакеты должны быть зарегистрированы где-нибудь, и это то, что делает Packagist. Packagist — это хранилище пакетов Composer по умолчанию. Это позволяет вам находить пакеты и позволяет Composer знать, откуда взять код. Вы можете использовать пакеты, разработанные сообществом, а также можете добавлять свои собственные пакеты.

В этой статье вы узнаете, как создать пакет PHP Packagist в Github для использования в composer и как зарегистрировать его на Packagist.org.

1. Создать базовую структуру пакета

Чтобы создать пакет в его наименьшем выражении, нам нужно создать базовую структуру (2 папки и 3 файла).

  1. Начните с создания папки с именем вашего пакета, в этом случае папка контейнера будет hello-composer,
  2. Создайте новую папку внутри hello-composer с именем srcэта папка будет содержать исходный код вашего пакета.
  3. Создайте первый класс вашего пакета (внутри hello-composer/src), в этом случае наш класс будет Hello с именем файла Hello.php и он будет содержать следующий код:

Пространство имен может быть изменено по вашему желанию, в этом случае мы добавим ourcodeworld Префикс, так как вы можете создавать множество пакетов, но с префиксом они всегда будут связаны с вами (кроме того, он будет создан в одной папке в каталоге vendor).

2. Создайте файл composer.json

composer.json файл должен находиться в верхней части вашего пакета (hello-composer/composer.json), и это способ, которым вы описываете свой пакет как для Packagist, так и для композитора.

Прежде всего, вы должны выбрать название пакета. Это очень важный шаг, так как он не может измениться и должен быть достаточно уникальным, чтобы избежать конфликтов в будущем, это имя должно быть в "name" собственность composer.json файл.

Есть 2 способа создания composer.json файл для вашей посылки:

А. С помощником композитора

Создать composer.json с динамическим помощником, который будет запрашивать каждое свойство в консоли, чтобы запустить его, перейдите в папку пакета с консолью:

cd c:/folder-where/your-package-is-located/hello-composer

и затем выполните:

composer init

Следуйте интерактивной подсказке и укажите значение для каждого поля. Если вам нужно больше полей в сгенерированном composer.json, см. документацию для большего количества свойств или используйте следующее composer.json,

Б. Вручную

Вы можете создать свой собственный composer.json вручную, следуя следующему примеру (измените значения в соответствии с вашими):

{
"name": "ourcodeworld/hello-composer",
"description": "My first packagist package",
"type": "package",
"require": {
"php": ">=5.3.0"
},
"license": "mit",
"authors": [
{
"name": "Your Name",
"email": "your@email.com",
"homepage": "http://yourhomepage-if-you-have.com"
}
],
"minimum-stability": "dev",
"autoload": {
"psr-4": {
"ourcodeworld\\HelloComposer\\": "src/"
}
}
}

Самый важный момент в composer.json это «автозагрузка», внутри «psr-4» вы укажете, что все файлы с пространством имен ourcodeworld\HelloComposer внутри src/ папка вашего пакета должна быть автоматически загружена. Префиксы пространства имен должны заканчиваться на \\ чтобы избежать конфликтов между похожими префиксами. Например Foo будет соответствовать классам в FooBar namespace, так что обратные косые черты решают проблему: Foo\\ а также FooBar\\ различны.

Затем, когда ваш пакет был опубликован и установлен (еще нет), вы можете создать экземпляр ранее созданного класса Hello с:

say("Hello World");

Не стесняйтесь изменять пространства имен по своему желанию в composer.json и твои занятия. После того, как все файлы созданы, структура вашего проекта должна выглядеть так (вы можете посетить тестовый репозиторий в Github, чтобы увидеть структуру там):

Packagist Упаковка

3. Разместите свой пакет

Чтобы опубликовать свой пакет в Packagist, вам нужно будет разместить его в репозитории с контролем версий, например, GIT, Subversion или Mercurial. Как упоминалось в этой статье, мы собираемся использовать Github для размещения нашего тестового пакета с Git.

Создайте репозиторий Github, если он еще не создан с названием вашей посылки (в этом случае hello-composer) и лицензию, если хотите:

Создать репозиторий Github

После создания клонируйте репозиторий на рабочий стол и сохраните содержимое нашего пакета внутри. Мы предполагаем, что у вас есть знания в Git, и вы знаете, как зафиксировать все файлы репозитория. Зафиксируйте все файлы в своем хранилище, после подтверждения убедитесь, что все файлы были успешно загружены:

Демо-репозиторий Github

Теперь хранилище должно находиться в https://github.com/ourcodeworld/hello-composer и URL-адрес мерзавца https://github.com/ourcodeworld/hello-composer.git.

4. Зарегистрировать пакет в упаковке

Перейдите к Packagist и создайте новый аккаунт в случае, если у вас его нет. Если у вас есть учетная запись, войдите в систему и перейдите к Отправить и приступить к созданию пакета.

Дайте URL репозитория, в нашем случае нашего репозитория https://github.com/ourcodeworld/hello-composer и затем нажмите «Проверить», Packagist проверит, доступно ли имя пакета, если оно есть, нажмите «Отправить».

Название пакета будет получено из composer.json файл в вашем хранилище:

Зарегистрировать пакет packagist

Как только ваша посылка будет принята, вы должны увидеть, что ваша посылка наконец опубликована:

Пакет опубликован Packagist.org

Обратите внимание, что предупреждение «Этот пакет не обновляется автоматически» будет удалено, если вы выполните Шаг № 6.

5. Требуйте свой пакет и протестируйте его

Ваш пакет опубликован, и вы можете потребовать его с композитором! Команда для запроса вашего пакета с composer composer require / что в этом случае будет:

composer require ourcodeworld/hello-composer

Обратите внимание, что если "minimum-stability" собственность в вашем package.json был установлен на "dev"то проект, в котором вам требуется пакет, должен иметь такой же "minimum-stability" свойство, в противном случае вы получите следующее исключение в консоли:

Не удалось найти посылку / в любой версии для вашей минимальной стабильности (стабильной). Проверьте правильность написания пакета или минимальную стабильность

Если вы выполните предыдущую команду, чтобы добавить пакет в ваш проект, должен быть показан следующий вывод:

Установочный пакет Composer

Для этого примера, чтобы проверить, работает ли наш созданный пакет, мы собираемся выполнить следующий скрипт php (так как это тест, мы загружаем autoload.php из композитора, если вы используете фреймворк, такой как Symfony, вам, вероятно, не нужно это делать):

say("Hello World");

Используя команду:

php index.php

И окончательный вывод должен быть:

Demo Output Composer Package

Поздравляем, вы только что успешно создали и опубликовали свой первый пакет-пакет!

6. Установите пакет автообновления при каждом нажатии с помощью Webhooks

Обычно, чтобы обновить пакет packagist, вам нужно зафиксировать свои изменения, а затем получить доступ к вашему пакету внутри Packagist.org и нажать «Обновить»:

Обновление пакета пакетов Packagist

Но это может стать довольно раздражающим, а также запутанным и дезорганизованным, это именно то, что мы хотим избежать с композитором. Чтобы упростить задачу, вы можете использовать Webhooks хранилища в Github. Концепция WebHook проста для понимания, WebHook - это просто обратный вызов HTTP, HTTP POST, который происходит, когда что-то происходит, и отправляет простое уведомление о событии через HTTP POST, в этом случае этот запрос POST будет автоматически выполняться Github. каждый раз, когда вы вносите некоторые изменения в свой репозиторий.

Чтобы включить эту функцию:

  • Перейдите в свой репозиторий в Github и нажмите «Настройки».
  • В этом документе выберите Интеграции Вариант услуг из левого меню.
  • Нажмите на Добавить сервис и искать Packagist а затем нажмите на него.

Интеграция Packagist Github Репозиторий

Теперь вы, вероятно, будете перенаправлены для подтверждения вашего пароля, после чего появится следующее окно:

Packagist и сервис интеграции Github

В этом окне укажите в форме свое имя пользователя Packagist.org и токен Packagist (этот токен является уникальным, и вы можете найти его в ваш профиль Packagist), установите флажок Active и нажмите Add service. Теперь ваш пакет будет автоматически обновляться в Packagist каждый раз, когда вы фиксируете изменения и вносите в них изменения.

Ссылка на основную публикацию
Adblock
detector