
Как избавиться от лишних неявных зависимостей 🧹
Рассмотрим классический пример про полифилы. Symfony Console версии 5.1 использует функцию is_countable, которая появилась в PHP 7.3. Чтобы поддерживать PHP 7.2, пакет требует полифил symfony/polyfill-php73. Поэтому когда мы устанавливаем
Чтобы его удалить, нужно в composer.json в разделе replace прописать
ComposerRequireChecker (на страже в CI) поможет не увлечься и не удалить лишние пакеты. Он проверит, что все используемые в проекте символы (функции, константы и классы) содержатся в зависимостях, явно прописанных в
В сниппете фрагменты composer.json из нашего проекта в Happy Inc.
Рассмотрим классический пример про полифилы. Symfony Console версии 5.1 использует функцию is_countable, которая появилась в PHP 7.3. Чтобы поддерживать PHP 7.2, пакет требует полифил symfony/polyfill-php73. Поэтому когда мы устанавливаем
symfony/console
в проекте с PHP 7.4, мы получаем не только компонент, но и полифил PHP 7.3, который нам, очевидно, не нужен.Чтобы его удалить, нужно в composer.json в разделе replace прописать
"symfony/polyfill-php73": "*"
и выполнить update
. Аналогично можно убрать полифилы расширений PHP, предварительно гарантировав их наличие через require ext-<name>
(см. сниппет).ComposerRequireChecker (на страже в CI) поможет не увлечься и не удалить лишние пакеты. Он проверит, что все используемые в проекте символы (функции, константы и классы) содержатся в зависимостях, явно прописанных в
require
.В сниппете фрагменты composer.json из нашего проекта в Happy Inc.