Есть ли способ сказать композитору, что каждый раз, когда я делаю composer update
, я хочу, чтобы он проигнорировал конкретный пакет?
Не обновлять определенный пакет
Ответ 1
На самом деле я не знаю, есть ли способ сказать composer
исключить один конкретный пакет из обновления, но вы можете указать, какие пакеты обновлять как
composer update <package> <package2>; // or
php composer.phar update <package> <package2>;
Например,
composer update foo/package1 bar/package2; // or
php composer.phar update foo/package1 bar/package2;
Кроме того, я думаю, если вы не перечислите их в composer.json
(удалить после установки) самостоятельно, они не будут обновлены, если они также не указаны в списке.
От композитора: Если вы хотите установить или обновить одну зависимость, вы можете добавить их в белый список:
$ php composer.phar update monolog/monolog [...]
Проверьте эту ссылку, а также отметьте Composer.
Обновление: (найдено в Интернете, но не проверено)
Чтобы сделать это, просто удалите пакет из composer.lock
Ответ 2
Рассматривали ли вы указание требуемой версии пакета, который вы пытаетесь игнорировать? Например:
"require": {
"some/package": "~1.2"
}
Это может быть обновлено, потому что вы говорите любую версию >= 1.2, < 2.0. Но если вы строго утверждаете, что хотите только версию 1.0, вы не должны видеть никаких обновлений для этого пакета:
"require": {
"some/package": "1.2"
}
Ответ 3
Обновление: доступно только для композиторов версий 1.0.0-alpha6 и ниже. Использование его в версии 1.0.0-alpha7 и выше приведет к удалению всех пакетов в "require-dev".
Я считаю, что в настоящее время вы можете обмануть композитора каким-то беспорядком, если сможете себе это позволить в своем проекте. Что-то вроде: Поместите все пакеты, которые вы не хотите обновлять, в "require-dev"
и запускайте обновления с помощью composer update --no-dev
Просто будьте осторожны, если вы запустите composer install
, как я помню, они будут удалены из вашего проекта.
Вся эта обманка действительно противна, поэтому мы должны ждать официального способа делать такие вещи, лично я обновляю пакеты, явно указывая их
Ответ 4
Чтобы игнорировать определенный пакет, вы можете использовать provide
(если это часть вашего собственного пакета) или replace
. Это говорит Composer, что вы хотите предоставить/заменить определенный пакет, чтобы он не загружал его.
Вот пример файла composer.json
, который должен работать:
{
"require": {
"radic/tmp-underscore-php": "~1.2.0"
},
"replace": {
"patchwork/utf8": "*"
}
}
В этом примере пакет patchwork/utf8
будет проигнорирован на composer install
или update
.
Чтобы исключить определенную версию, см. Composer исключает определенные версии.