Репозиторий для 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/nametypeтип пакета, данный пакет будет библиотекаlibraryбиблиотека, файлы скопируются вvendorprojectпроект, например оболочки приложений, такие как стандартная версияSymfony, системы управления содержимым, такие как установщикSilverStripe, полноценные приложения, распространяемые в виде пакетов. Это применяется в интегрированных средах разработки, где предоставляются листинги проектов для инициализации при создании новой рабочей областиmetapackageпустой пакет с требованиями, которым запускается их установка, но файлов в нем нет и в файловую систему ничего не записывается. Поэтому для его установки ключdistилиsourceне требуетсяcomposer-pluginв таком пакете может быть установщик других пакетов пользовательского типаsymfony-bundleприменяется в бандлах фреймворковSymfonyдля автоматического с помощьюFlexвключения бандла при его установке
descriptionописание пакетаlicenseтип лицензииrequireсписок зависимостей для публикации на проде данного пакета. Для него требуется версия PHP не менее 8.8.0 и пакетilluminate/supportrequire-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 или stablePackage Typeтип проекта, например: library, project, metapackage, composer-pluginLicenseлицензияDepenciesздесь вы можете интерактивно найти пакеты, от которых будет зависеть ваш проект
На последнем шаге утилита предложит вам проверить, всё ли верно указано в конфигурационном файле:
После подтверждения, будет создан файл composer.json, вы сможете установить нужные пакеты и добавлять свои исходные файлы.
Командой composer init не поддерживаются следующие параметры конфигурации:
Они добавляются в файл 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
Пакет публикуется в два этапа:
- Файлы нужно разместить в публичном репозитории любого Гита
- Зарегистрировать проект в
Packagist
Регистрируемся и входим в хранилише Packagist и отправляем пакет:
Нажимаем кнопку check для проверки уникальности названия пакета.
В случае успеха появится кнопка отправки, отправленный пакет несколько минут обрабатывается, затем публикуется и становится доступным к использованию в любом проекте на PHP.
Версии пакетов
Для создания вирсии пакета, нужно сначала внутри Гита где находятся файлы проекта сделать новый тег:
Нажать кнопку Update в личном кабинете репозитория Packagist на странице проекта:
Packagist автоматически подтянет новый тег:





