Есть ли способ сказать композитору, что каждый раз, когда я делаю composer update
, я хочу, чтобы он проигнорировал конкретный пакет?Не обновлять конкретный пакет
ответ
На самом деле я не знаю, есть ли способ сказать 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 [...]
Check this link, а также проверить Composer.
Update: (найдено в интернете, но не тестировалось)
Чтобы сделать это, просто удалите пакет из composer.lock
Я попытался удалить пакет из composer.lock, но не работает. При запуске обновления композитор возвращает его. Обновляя все остальные пакеты вручную, это не то, что мне нужно (но если я не получу лучшего ответа/решения, я помету ваш ответ в качестве решения. Спасибо @ sheikh-heera –
привет, привет человек, вы проверили на сайте композитора, как говорили, упоминаются пакеты, что-то вроде 'php composer.phar update monolog/monolog [...]', а также вы пытались удалить пакет из 'composer.json' тоже? –
, если вы удалите пакет из composer.json, он будет удален, когда вы сделаете 'comper update' –
Рассматривали ли вы указать требуемую версию для пакета, который вы пытаетесь игнорировать? Например:
"require": {
"some/package": "~1.2"
}
Это может обновляться, потому что вы говорите любой версии> = 1,2, < 2.0, но если вы строго сказать, что вы хотите только версии 1.0, вы не должны видеть любые обновления этого пакета:
"require": {
"some/package": "1.2"
}
, это должен быть принятый ответ. – Juan
Обновление: Доступно только для композиторов версий 1.0.0-alpha6 и ниже. Используя его в версии 1.0.0-alpha7 и выше, удалите все пакеты в «require-dev».
Я считаю, что в настоящее время вы можете обмануть композитора каким-то беспорядком, если вы можете себе это позволить в своем проекте. Что-то вроде: Сложите все пакеты, которые вы не хотите обновлять в "require-dev"
и запускать обновления с composer update --no-dev
Только будьте осторожны, чтобы при запуске composer install
, как я помню, они будут удалены из проекта.
Все это обман действительно противно, так что мы должны ждать официального способа делать такие вещи, как, что, лично я обновить пакеты явно указав их
Это, в конце концов, сделало трюк для меня. Определенно единственное решение оставить отдельные пакеты нетронутыми. перед тем, как это сделать. – Conic
«Обновление композитора --no-dev» удаляет все пакеты «require-dev», не используйте его. Я узнал его не так ... – Clyff
@Clyff thats correct just checked, он работает для версий <1.0.0-alpha7. Он был переписан после включения/включения в 1.0.0-alpha7. – arma
Игнорирование определенный пакет, вы можете использовать provide
(если это часть ваш собственный пакет) или replace
. Это говорит Composer, что вы хотите предоставить/заменить определенный пакет, чтобы он не загружал его.
Вот composer.json
пример файла, который должен работать:
{
"require": {
"radic/tmp-underscore-php": "~1.2.0"
},
"replace": {
"patchwork/utf8": "*"
}
}
В этом примере patchwork/utf8
пакет будет игнорироваться на composer install
или update
.
Для исключения конкретной версии см.: Composer exclude specific versions.
IIRC флаг, чтобы делать такие вещи –
надеюсь, что он придет ... –