кодесурса

Создание библиотек / пакетов, устанавливаемых с помощью composer

script1adsense2code
script1adsense3code

Вступление

Вам может быть интересно отметить, что каждый проект с файлом «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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code