有没有办法告诉composer,每次我执行composer update
时,我都希望他忽略特定的包?
您是否考虑过为要忽略的包指定所需的版本?例如:
"require": {
"some/package": "~1.2"
}
这可能会更新,因为您说的是任何版本>=1.2,<2.0,但如果你严格地说你只想要1.0版本,你不应该看到该包的任何更新:
"require": {
"some/package": "1.2"
}
实际上,我不知道是否有任何方法可以告诉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
中删除包
要忽略特定的程序包,可以使用provide
(如果它是您自己程序包的一部分)或replace
。这个消息告诉Composer,你希望提供/替换一个特定的包,所以它不会下载它
以下是应该工作的composer.json
文件示例:
{
"require": {
"radic/tmp-underscore-php": "~1.2.0"
},
"replace": {
"patchwork/utf8": "*"
}
}
在本例中,composer install
或update
上的patchwork/utf8
包将被忽略。
要排除特定版本,请参见:Composer排除特定版本。
更新:仅适用于composer 1.0.0-alpha6及更低版本。在1.0.0-alpha7及更高版本中使用它将删除"require-dev"中的所有包
我相信,如果你能在你的项目中负担得起,目前你可以用一些混乱来欺骗作曲家。类似于:将所有不想更新的包放在"require-dev"
中,并使用composer update --no-dev
运行更新
请注意,如果您运行composer install
,我记得它们将从您的项目中删除。
所有这些伎俩真的很恶心,所以我们应该等待官方的方式来做这样的事情,我个人会更新明确指定它们的包