Как стать автором
Обновить

Свой Composer без баннеров

Время на прочтение2 мин
Количество просмотров9.2K

Или как собрать composer.phar из исходников, добавить собственные изменения, подписать архив валидной сигнатурой и жить дальше.

Шаг 1 из 7

Клонируем официальные исходники необходимой версии Composer в локальную папку

git clone https://github.com/composer/composer.git

Шаг 2 из 7

Скачиваем "токсичную" сборку, в которой хотим что-либо изменить

wget https://getcomposer.org/composer.phar

Шаг 3 из 7

Ставим зависимости. Появляется папка ./vendor

cd composer && php ../composer.phar install

Шаг 4 из 7

Вносим необходимые изменения. В данном случае, удаляем токсичный политический баннер от со-автора Composer Jordi Boggiano.

Ищем функцию writeError() и добавляем пару строк с str_replace().

nano src/Composer/IO/ConsoleIO.php

public function writeError($messages, bool $newline = true, int $verbosity = self::NORMAL)
{
    $messages = str_replace('Ukraine', '', $messages);
    $messages = str_replace('#StandWith', '', $messages);
    $this->doWrite($messages, $newline, true, $verbosity);
}

Сохраняем. Можем проверить какие изменения у нас получились git status и git diff.

Шаг 5 из 7

Собираем свой новый Composer с фиксом. Composer умеет сам себя собирать в phar архив. Для чего запускаем bin/compile, выставив флаг readonly в 0.

php -d phar.readonly=0 bin/compile

** Кому интересен процесс сборки в деталях можно смотреть сюда https://github.com/composer/composer/blob/main/src/Composer/Compiler.php

Шаг 6 из 7

Проверяем, что больше никаких баннеров при апдейте пакетов, все изменения внесены и подписаны SHA512.

php composer.phar install
php composer.phar update

Шаг 7 из 7

Кто использует Composer глобально может перенести в /usr/local/bin

chmod +x composer.phar

sudo mv composer.phar /usr/local/bin/composer

** Надеюсь кому-то пригодится, кто левой пяткой во сне каждую ночь не собирает phar архивы своих проектов.

Теги:
Хабы:
Всего голосов 76: ↑34 и ↓42-3
Комментарии51

Публикации

Истории

Работа

DevOps инженер
44 вакансии
PHP программист
106 вакансий

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань