有没有办法告诉作曲家,每次我做一个composer update
我希望他忽略一个特定的包?
4 回答
您是否考虑过为您要忽略的软件包指定所需的版本?例如:
"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
自己将它们列出(安装后删除),那么除非在列表中也指定,否则它们将不会被更新。
来自 Composer: 如果您只想安装或更新一个依赖项,您可以将它们列入白名单:
$ php composer.phar update monolog/monolog [...]
更新:(在互联网上找到但未经测试)
为此,只需从composer.lock
更新:仅适用于 composer 版本 1.0.0-alpha6 及更低版本。在 1.0.0-alpha7 及更高版本中使用它会删除“require-dev”中的所有包。
我相信,如果您在项目中负担得起的话,目前您可以用一些混乱来欺骗作曲家。类似的东西:将所有您不想更新的软件包放入"require-dev"
并运行更新composer update --no-dev
请注意,如果您composer install
像我记得的那样运行,它们将从您的项目中删除。
所有这些诡计真的很讨厌,所以我们应该等待官方的方式来做这样的事情,我个人更新包明确指定它们
要忽略特定包,您可以使用provide
(如果它是您自己的包的一部分)或replace
. 这告诉 Composer 你希望提供/替换一个特定的包,所以它不会下载它。
这是composer.json
应该工作的文件示例:
{
"require": {
"radic/tmp-underscore-php": "~1.2.0"
},
"replace": {
"patchwork/utf8": "*"
}
}
在此示例中,patchwork/utf8
包将在composer install
或上被忽略update
。
要排除特定版本,请参阅:作曲家排除特定版本。