Полный цикл в digital

Репозиторий для Composer

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

Обязательным файлом для любого пакета является composer.json. Это файл в котором хранится вся информация про данный пакет:

  • Название
  • Описание
  • Список зависимостей
  • Тип лицензии

Пример файла composer.json простого пакета:

composer.json{
    "name": "dataart/package",
    "type": "library",
    "description": "Composer package by DataArt",
    "license": "MIT",
    "require": {
        "php": ">=5.4.0",
        "illuminate/support": "~4.2"
    },
    "autoload": {
        "psr-4": {
            "Dataart\\Package\\": "src/"
        }
    }
}
  • name имя пакета в формате vendor/name
  • type тип пакета, данный пакет будет библиотека
    • library библиотека, файлы скопируются в vendor
    • project проект, например оболочки приложений, такие как стандартная версия Symfony, системы управления содержимым, такие как установщик SilverStripe, полноценные приложения, распространяемые в виде пакетов. Это применяется в интегрированных средах разработки, где предоставляются листинги проектов для инициализации при создании новой рабочей области
    • metapackage пустой пакет с требованиями, которым запускается их установка, но файлов в нем нет и в файловую систему ничего не записывается. Поэтому для его установки ключ dist или source не требуется
    • composer-plugin в таком пакете может быть установщик других пакетов пользовательского типа
    • symfony-bundle применяется в бандлах фреймворков Symfony для автоматического с помощью Flex включения бандла при его установке
  • description описание пакета
  • license тип лицензии
  • require список зависимостей для публикации на проде данного пакета. Для него требуется версия PHP не менее 8.8.0 и пакет illuminate/support
  • require-dev список зависимостей для среды разработки данного пакета
  • autoload настройки автозагрузки. В данном случае указано, что неймспейс Dataart\Package начинается в папке src. У всех файлов, которые лежат в папке src, должен быть неймспейс Dataart\Package. Если, например, хотите создать класс User и сохранить файл класса в папке Models, неймспейс класса User должен быть Dataart\Package\Models

В папке src хранятся все нужные для работы пакета файлы. Рекомендуется рядом с папкой src сделать папку tests и покрыть библиотеку тестами. Далее вся папка, в которой лежит composer.json, должна быть закоммичена в любом Гите.

Обязательно в проект нужно добавить файл README.md с описанием пакета и особенностей его использования.

Автоматическое создание файла composer.json

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

composer init

Утилита задаст несколько вопросов:

  • Package name имя нового пакета в формате: автор/имя
  • Description описание
  • Author автор пакета
  • Minimum Stability стабильность пакета, можно выбрать dev или stable
  • Package Type тип проекта, например: library, project, metapackage, composer-plugin
  • License лицензия
  • Depencies здесь вы можете интерактивно найти пакеты, от которых будет зависеть ваш проект

На последнем шаге утилита предложит вам проверить, всё ли верно указано в конфигурационном файле:

После подтверждения, будет создан файл composer.json, вы сможете установить нужные пакеты и добавлять свои исходные файлы.

Командой composer init не поддерживаются следующие параметры конфигурации:

  • PSR-4 autoload-dev для указания другого пространства имен путей test/dev
  • Config
  • Скрипты

Они добавляются в файл composer.json вручную. Например, добавим в пакет пространство имен PSR-4 autoload-dev:

composer.json{
    "name": "dataart/package",
    "type": "library",
    "description": "Composer package by DataArt",
    "license": "MIT",
    "require": {
        "php": ">=5.4.0",
        "illuminate/support": "~4.2"
    },
    "autoload": {
        "psr-4": {
            "Dataart\\Package\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Dataart\\Package\\Tests\\": "tests/"
        }
    },
}

Загрузка пакета на Packagist

Пакет публикуется в два этапа:

  1. Файлы нужно разместить в публичном репозитории любого Гита
  2. Зарегистрировать проект в Packagist

Регистрируемся и входим в хранилише Packagist и отправляем пакет:

Нажимаем кнопку check для проверки уникальности названия пакета.

В случае успеха появится кнопка отправки, отправленный пакет несколько минут обрабатывается, затем публикуется и становится доступным к использованию в любом проекте на PHP.

Версии пакетов

Для создания вирсии пакета, нужно сначала внутри Гита где находятся файлы проекта сделать новый тег:

Нажать кнопку Update в личном кабинете репозитория Packagist на странице проекта:

Packagist автоматически подтянет новый тег:


Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг