不要更新特定的包

时间:2013-06-26 07:32:26

标签: composer-php

有没有办法告诉作曲家每次我做composer update时我都希望他忽略特定的套餐?

4 个答案:

答案 0 :(得分:33)

您是否考虑过为要忽略的软件包指定所需的版本?例如:

"require": {
    "some/package": "~1.2"
}

这可能会更新,因为您说的是任何版本> = 1.2,< 2.0,但如果严格说您只想要版本1.0,则不应该看到该软件包的任何更新:

"require": {
    "some/package": "1.2"
}

答案 1 :(得分:5)

实际上我不知道是否有任何方法可以告诉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 [...]

Check this link并检查Composer

更新(在互联网上找到但未经过测试)

为此,只需从composer.lock

中删除该包即可

答案 2 :(得分:2)

更新:仅适用于作曲家版本1.0.0-alpha6及更低版本。在版本1.0.0-alpha7及更高版本中使用它将删除&#34; require-dev&#34;中的所有包。

我相信如果你能在项目中负担得起,你现在可以给作曲家带来麻烦。类似于:将您不想更新的所有套餐放在"require-dev"中,并使用composer update --no-dev

运行更新

如果您运行composer install,请小心,因为我记得它们将从您的项目中删除。

所有这些诡计都非常讨厌,所以我们应该等待官方的做法,亲自更新明确指定的包

答案 3 :(得分:1)

要忽略特定的套餐,您可以使用provide(如果它是您自己的套餐的一部分)或replace。这告诉Composer您希望提供/替换特定包,因此不会下载它。

以下是应该有效的df -h文件示例:

composer.json

在此示例中,{ "require": { "radic/tmp-underscore-php": "~1.2.0" }, "replace": { "patchwork/utf8": "*" } } patchwork/utf8会忽略composer install个包。

要排除特定版本,请参阅:Composer exclude specific versions

相关问题