Создание библиотек / пакетов, устанавливаемых с помощью composer
Вступление
Вам может быть интересно отметить, что каждый проект с файлом «composer.json» в своем каталоге является библиотекой / пакетом. Всякий раз, когда мы добавляем ключ «require», мы создаем пакет, который будет зависеть от других пакетов. Основное различие между нашими проектами и стандартным пакетом состоит в том, что наши проекты - это пакеты без имен. Поэтому добавление свойства name в наш «composer.json» делает наш проект устанавливаемым пакетом.
В последнем уроке мы установили и использовали классы из пакетов с открытым исходным кодом, в этом уроке мы рассмотрим, как сделать наши собственные библиотеки / проекты / пакеты устанавливаемыми с помощью Composer. Мы будем использовать библиотеку слов, пакет и проект, чтобы ссылаться на пакет, чтобы лучше понять концепцию.
#Имя пакета
Чтобы наша библиотека могла быть установлена, у нашей библиотеки должен быть поставщик и имя пакета. Мы делаем это, добавляя эти имена в файл «package.json», как показано в фрагменте кода ниже.
{
“name” : “vitalis/hello-world”
“require”: {
“monolog/monolog”:”1.0.*”
}
}
В приведенном выше фрагменте кода «vitalis» - это имя поставщика, а «hello-word» - имя пакета. Имя поставщика, как объяснено в предыдущем руководстве, помогает предотвратить конфликты имен, поскольку пакет может иметь одинаковое имя пакета, но другое имя поставщика. Эти имена всегда нечувствительны к регистру, но преобразование должно использовать строчные и тире для разделителей слов.
# Версии пакета
В большинстве наших процессов разработки мы можем использовать системы контроля версий (VCS), такие как Git, в нашем проекте. В таких случаях нам не требуется явно указывать версию нашего проекта / пакета в файле «composer.json» в качестве веток и тегов VCS пользователя composer для устранения ограничений версии.
Но в случае, когда мы поддерживаем пакет вручную, мы должны явно указать версию нашего пакета или проекта в файле «composer.json», как показано в фрагменте кода ниже:
{
“version” : “1.0.0”
}
Важно отметить, что добавление жесткого номера версии в VCS приведет к конфликту версий и тегов, поскольку композитор не сможет разрешить версию наших проектов.
# Версия от VCS
Composer использует нашу ветку и теги для разрешения ограничений версий наших зависимостей проекта, указанных в наших обязательных полях. Он также сопоставляет эти версии с правильным происхождением и сохраняет их в файле «composer.lock».
# Публикация в VCS
Чтобы опубликовать наш пакет в хранилище VCS, наш проект должен содержать файл composer.json, поэтому в нашем случае наш проект уже можно установить, поскольку он содержит файл «composer.json».
В этом руководстве мы опубликуем библиотеку «vitalis / hello-world» для GitHub по адресу https://github.com/agavitalis/hello-world.
Теперь, чтобы протестировать нашу только что опубликованную библиотеку, мы создадим новый проект локально. Мы назовем этот проект «vitalis / use-hello-world». Этот локально созданный проект будет зависеть от «vitalis / hello-world», который, в свою очередь, будет зависеть от некоторых других библиотек, в данном случае «monolog / monolog».
Для этого проект «vitalis / use-hello-world» должен содержать файл composer.json, в котором мы будем указывать, как требовать «vitalis / hello-world», размещенный в GitHub. Пример спецификации того, как файл composer.json проекта «vitalis / use-hello-world» показан в фрагменте кода ниже:
{
"name": "vitalis/use-hello-world",
"repositories": {
"type ": "vcs ",
“url” : “https://github.com/agavitalis/hello-world”
}
"require": {
"vitalis/hello-composer": "dev-master"
}
}
Приведенный выше фрагмент кода показывает содержимое файла «composer.json» нашего локально созданного проекта «vitalis / use-hello-world». Мы можем пропустить опцию name, если у нас нет намерения публиковать этот проект, но мы включили его для ясности.
Спецификации репозиториев были добавлены, чтобы сообщить композитору, где найти пакет vitalis / hello-world.
На этом этапе мы можем запустить команду «composer install», и composer захватит наш пакет «vitalis / hello-world» в папку поставщика «vitalis / use-hello-world».
# Публикация в Packagist
Пока что мы можем публиковать пакеты, но необходимость включать детали VCS для каждого пакета довольно избыточна и утомительна, и нам это не понравится, таким образом, Packagist.
Packagist - это центральный репозиторий для композитора, и он включен по умолчанию. Любой пакет, опубликованный в Packagist, автоматически доступен через composer, поэтому мы смогли указать «monolog / monolog» в пакете «vitalis / hello-world» без указания его репозитория.
Итак, чтобы поделиться нашим пакетом vitalis / monolog с миром, мы просто заходим на https://packagist.org и нажимаем кнопку отправки. Это побудит нас зарегистрироваться, если мы еще не зарегистрированы, а затем позволит нам отправить URL в наш репозиторий VCS. Как только мы это сделаем, наш проект станет реальностью для всего мира, и его можно будет установить одним щелчком мыши с помощью composer без указания хранилища.
Да, мы успешно прошли через процесс установки наших библиотек с помощью composer. В следующих уроках мы проследим за этими процессами и создадим фактический пакет, сделаем его живым в Packagist, а затем используем пакет в другом проекте.
Не забудьте понравиться и поделиться этим учебником со своими друзьями, следите за нашими новостями в социальных сетях.
Предыдущий: Как автоматически обновлять пакеты composer с помощью webhooks
Далее: установка пакета с использованием composer
Новый контент: Composer: менеджер зависимостей для PHP , R программирования