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

2 ноября 2020 года

Представлен релиз 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.
  • Добавлено большое число новых флагов.

Источники править

 
 
Creative Commons
Эта статья содержит материалы из статьи «Доступен Composer 2.0.0, менеджер зависимостей для PHP», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.