Программирование

Composer

Что такое Composer?

Composer написали Nils Adermann и Jordi Boggiano. Первый открытый выпуск был в 2012 году. Пакеты в основном лежат в реестре Packagist. composer.json — список пакетов проекта. composer.lock закрепляет точную версию. composer install читает этот список и кладёт пакеты в папку vendor. PHP запускает программу. Composer только приносит библиотеку и сам страницу не запускает.

Для чего нужен Composer?

Composer нужен, чтобы поставить готовую библиотеку в проект PHP и повторить тот же список на другом компьютере.

  • Поставить сам фреймворк одной командой
  • Хранить версию через composer.lock
  • Отделить пакет в папке vendor
  • Заменить старый пакет более новым

Что можно делать с Composer?

Через Composer добавляют пакет и ставят из списка. Он не заменяет PHP. Незнакомый пакет кладёт свой код внутрь твоего проекта. Папку vendor в репозиторий обычно класть не нужно. Хватает списка и файла lock.

Сложно ли освоить Composer?

Поставить один пакет легко. Трудность в версии PHP и в файле lock. Пакет может просить PHP новее твоего, и установка останавливается. Если выбросить composer.lock, завтра может прийти другая версия. Если два проекта пишут в одну общую папку, версии смешиваются.

Плюсы и ограничения

Плюс: библиотеку не переписывают, список лежит в одном файле, та же установка повторяется на другой машине. Ограничение: vendor растёт. Не каждой мелкой работе нужен пакет. Composer — это не pip и не npm.

Основные понятия

У пакета есть имя и версия. composer.json — список. vendor — место скачанных файлов.

  • composer.json хранит список
  • composer.lock закрепляет версию
  • vendor — папка пакетов
  • Packagist — общий реестр

Короткий пример

Эта команда ставит пакеты из списка в папку vendor. Саму программу на PHP она не пишет.

composer install

Частые вопросы

  • Composer и PHP — одно и то же? Нет. PHP запускает программу. Composer приносит библиотеку.
  • Composer, pip и npm — одно и то же? Работа похожа, инструмент отдельный. Composer для PHP.
  • Папка vendor должна лежать в репозитории? Обычно нет. Остаются список и файл lock, а пакеты приходят при установке.