Доступен Composer 2.0.0, менеджер зависимостей для PHP


Представлен релиз Composer 2.0.0, менеджера для установки зависимостей в проектах на языке PHP. Composer позволяет определить какие библиотеки функций необходимы для работы проекта, после чего берёт на себя работу по установке недостающих зависимостей и обновлению новых версий. Доступные для установки библиотеки размещены в репозитории Packagist, который насчитывает более 287 тысяч пакетов. Код Composer написан на PHP и распространяется под лицензией MIT.

Composer позиционируется как система установки зависимостей, спроектированная с оглядкой на возможности пакетных менеджеров npm и bundler, используемых в сообществах разработчиков Node.js и Ruby. Система оперирует пакетами в привязке к конкретным проектам и рассчитана на установку зависимостей в локальные каталоги проектов (в качестве опции имеется и режим глобальной установки для всей системы). По умолчанию предлагается установка стабильных выпусков библиотек, но также имеется возможность использования экспериментальных обновлений (alpha/beta) и снапшотов (срезы находящейся в разработке кодовой базы), которые полезны при организации тестовых сборок в системах непрерывной интеграции.

В выпуске:

  • Проведена значительная оптимизация производительности и сокращено потребление памяти. Очень многое переработано, от протокола для обращения к packagist.org до методов определения зависимостей. Обеспечена загрузка в несколько потоков метаданных и zip-архивов. Реализован режим параллельной установки пакетов. Добавлены оптимизации в код для вычислений. За счёт загрузки только метаданных пакета значительно ускорены операции require/remove и частичные обновления. В некоторых проектах отмечается ускорение до 50%.

    • Переработан механизм обновления зависимостей, который избавлен от привязки к состоянию каталога в локальной ФС. После завершения обновления процесс установки теперь запускается автоматически с предварительным выполнением всех операций, для которых необходим доступ к сети. Выполнение сетевых операций до фактического начала установки позволяет исключить ситуации возникновения не полностью обновлённых каталогов в случае возникновения сетевого сбоя в процессе установки. По возможности загрузки по сети выполняются в несколько потоков.
    • По умолчанию в runtime добавлена дополнительная стадия проверки платформы при инициализации vendor/autoload.php, которая проверяет соответствие версии PHP и используемых расширений с версиями, поддерживаемыми в зависимостях. В случае несоответствия выводится ошибка. Проверка выполняется с использованием нового класса Composer\InstalledVersions, который загружается для каждого проекта и позволяет определить какие пакеты и версии доступны в проекте.
    • Переработаны сообщения об ошибках, связанные с проблемами определения зависимостей. Данные сообщения стали короче, яснее и с меньшим числом дубликатов.
    • Добавлена поддержка частичных обновлений со временными ограничениями, которые можно использовать когда требуется временно обновить или откатить назад версию одного пакета с целью тестирования или ожидания исправления ошибки. Для временного ограничения версий при обновлении следует использовать конструкцию "composer update vendor/package:1.0.\", которая не изменит содержимое блока "require" в "composer.json" и не пометит файл с блокировкой устаревшим. При полном обновлении для задания ограничений можно использовать опцию "--with vendor/package:1.0.\".
    • Реализовано автоматическое удаление пакетов, которые больше не требуются.
    • В репозитории добавлены новые опции only, exclude и canonical.
    • Добавлены новые события pre-operations-exec, pre-pool-create и post-file-download.
    • Добавлено большое число новых флагов.
    Источник: https://www.opennet.ru/opennews/art.shtml?num=54003


Comments 0