Создание собственной библиотеки на PHP и её публикация в репозитории Packagist

Сначала подготовь composer.json. Название в формате vendor/package, корректный type, указание autoload (чаще всего PSR-4), описание, лицензия и ссылка на репозиторий – это минимум. Убедись, что всё валидно: composer validate покажет ошибки до публикации.

Репозиторий должен быть публичным. GitHub – самый удобный вариант. Создай новый проект, запушь туда весь код вместе с метаданными Composer. Не забудь про тег: версия в формате v1.0.0 обязательна, иначе Packagist не увидит релиз.

Далее – регистрация на packagist.org. Авторизуйся через GitHub, нажми «Submit», вставь ссылку на репозиторий и подтверди. Если всё собрано правильно, появится карточка пакета, Composer начнёт видеть его в поиске, а зависимые проекты – подтягивать при установке.

Чтобы не обновлять вручную – настрой Webhook. В настройках GitHub добавь https://packagist.org/api/github в разделе Webhooks. Так каждый push будет автоматически обновлять информацию о версии и зависимостях на стороне каталога.

Вот HTML-план информационной статьи с заголовками и двумя прикладными заголовками , как ты просил:

1. Инициализация структуры проекта

Открой терминал, перейди в нужную директорию и запусти composer init. Укажи название в формате vendor/name, описание, автора, лицензию и зависимости. Composer автоматически сгенерирует composer.json.

2. Настройка автозагрузки

Добавь в composer.json раздел autoload с PSR-4. Например:

"autoload": {
"psr-4": {
"MyVendor\\MyPackage\\": "src/"
}
}

После сохранения файла выполни composer dump-autoload, чтобы Composer сгенерировал автозагрузчик.

3. Подготовка к публикации

Создай публичный репозиторий на GitHub. Закоммить composer.json, код из src и сделай хотя бы один релиз. Не забудь о файле README.md с примером использования и инструкциями.

4. Регистрация в каталоге

Перейди на packagist.org, авторизуйся через GitHub и нажми «Submit». Вставь ссылку на репозиторий и нажми «Check». Если всё настроено правильно – проект появится в общем доступе.

5. Пример: библиотека для конвертации валют

В src/CurrencyConverter.php опиши класс с методом convert($amount, $from, $to), использующим API с курсами. Проверь работу с PHPUnit, добавь инструкции в README, протестируй в отдельном проекте через composer require.

6. Пример: пакет для валидации email

Реализуй метод isValid($email) с фильтрацией и регулярками. Покрой тестами. В описании на GitHub укажи, как расширять правила. Убедись, что composer.json содержит правильные namespace и метаданные.

Настройка структуры проекта и создание composer.json для будущей библиотеки

Сначала размести исходный код в каталоге src/. Это стандарт для автозагрузки через PSR-4. Например, если пространство имён – Vendor\Package, структура должна быть такой:

/project-root
├── src/
│   └── MyClass.php

Внутри MyClass.php укажи пространство имён:

<?php
namespace Vendor\Package;
class MyClass {
// ...
}

Минимальный composer.json

Файл composer.json положи в корень. Пример базовой конфигурации:

{
"name": "vendor/package",
"description": "Краткое описание",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"Vendor\\Package\\": "src/"
}
},
"require": {}
}

"name" должен соответствовать формату vendor/package и быть уникальным. "psr-4" обязательно указывает путь к коду, иначе автозагрузка работать не будет. Для тестирования удобнее всего добавить "require-dev" и "autoload-dev" с нужными инструментами и тестовым пространством имён.

Проверка и генерация автозагрузки

После настройки запусти composer dump-autoload, чтобы Composer сгенерировал файл автозагрузки. Убедись, что всё подгружается корректно, подключив vendor/autoload.php и вызвав классы из пространства имён. Если структура выстроена правильно, Composer сам найдёт нужные файлы.

Пошаговая инструкция по публикации библиотеки на Packagist и обновлению версий

Подготовка репозитория

Открой репозиторий на GitHub. В корне проекта должен быть файл composer.json с заполненными полями name, description, license, autoload и version (если не используешь теги). Обязательно укажи публичный URL репозитория и, если нужен автозагрузчик, пропиши PSR-4 или PSR-0.

Регистрация на платформе

Зайди на packagist.org, залогинься через GitHub. Нажми «Submit» и вставь ссылку на свой репозиторий. После подтверждения проект появится в каталоге. Packagist автоматически синхронизирует теги и версии с GitHub – главное, чтобы репозиторий был публичным и содержал корректный composer.json.

Чтобы обновить версию – создай новый тег, например: git tag v1.1.0, затем git push origin v1.1.0. Packagist подхватит новую метку, если включена GitHub Webhook-интеграция. Если её нет – нажми «Update» на странице пакета вручную или добавь webhook через настройки репозитория: URL – https://packagist.org/api/github, метод – POST.

Каждая новая версия должна иметь уникальный тег, соответствующий семантическому формату: vMAJOR.MINOR.PATCH. Не используй тег latest – он не обрабатывается. Если нужно временно скрыть релиз, удали тег и нажми «Delete» у нужной версии на сайте.