Composer 2.0.0

Опубликовано August@Karro - пн, 11/02/2020 - 09:31

Система оперирует пакетами в привязке к конкретным проектам и рассчитана на установку зависимостей в локальные каталоги проектов (в качестве опции имеется и режим глобальной установки для всей системы).

По умолчанию предлагается установка стабильных выпусков библиотек, но также имеется возможность использования экспериментальных обновлений (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.
  • Добавлено большое число новых флагов.

 

Последние материалы