Composer php 不要更新特定的包

Composer php 不要更新特定的包,composer-php,Composer Php,有没有办法告诉composer每次我更新一个composer时,我希望他忽略一个特定的包?事实上,我不知道是否有办法告诉composer从更新中排除一个特定的包,但你可以告诉他更新哪些包 composer update <package> <package2>; // or php composer.phar update <package> <package2>; 另外,我认为,如果您没有自己在composer.json(安装后删除)中列出它们

有没有办法告诉composer每次我更新一个
composer时,我希望他忽略一个特定的包?

事实上,我不知道是否有办法告诉composer从更新中排除一个特定的包,但你可以告诉他更新哪些包

composer update <package> <package2>; // or
php composer.phar update <package> <package2>;
另外,我认为,如果您没有自己在
composer.json
(安装后删除)中列出它们,那么它们将不会被更新,除非列表中也指定了它们

来自作曲家: 如果您只想安装或更新一个依赖项,可以将其列入白名单:

$ php composer.phar update monolog/monolog [...]
还要检查一下

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


要做到这一点,只需从
composer.lock

中删除软件包。您是否考虑过为试图忽略的软件包指定所需的版本?例如:

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

这可能会得到更新,因为您所说的任何版本>=1.2,更新:仅适用于composer版本1.0.0-alpha6及更低版本。在1.0.0-alpha7及更高版本中使用它将删除“require dev”中的所有包。

我相信现在你们可以用一些乱七八糟的东西来欺骗作曲家,只要你们能在你们的项目中负担得起。类似于:将所有不想更新的包放入
的“require dev”
中,并使用
composer update运行更新--无dev

如果您运行
composer安装
,请小心,我记得它们将从您的项目中删除


所有这些诡计都是非常令人讨厌的,所以我们应该等待官方的方法来做类似的事情,就我个人而言,我会更新包,明确指定它们来忽略特定的包,您可以使用(如果它是您自己包的一部分)或。这会告诉Composer您希望提供/替换一个特定的包,所以它不会下载它

下面是
composer.json
文件示例,它应该可以工作:

{
    "require": {
        "radic/tmp-underscore-php": "~1.2.0"
    },
    "replace": {
        "patchwork/utf8": "*"
    }
}
在本例中,在
composer安装
update
上,将忽略
patchwork/utf8


要排除特定版本,请参阅:。

IIRC执行类似操作的标志即将出现。我尝试从composer.lock中删除包,但不起作用。运行更新时,composer将其放回原处。手动更新所有其他软件包这不是我需要的(但如果我没有更好的答案/解决方案,我会将你的答案标记为解决方案。谢谢@sheikh heerahey!欢迎你,你检查过作曲家的网站了吗,据说提到了软件包,比如
php composer.phar update monolog/monolog[…]
还有,您是否也尝试从
composer.json
中删除包?如果您从composer.json中删除包,当您进行
composer更新时,它将被删除
,这最终为我解决了问题。这肯定是保持特定包不变的唯一解决方案。以前尝试过所有其他可能性。
composer更新--no dev
删除所有“require dev”软件包,不要使用它。我是通过艰苦的方式学会的…@Clyff刚刚检查过这是正确的,它适用于<1.0.0-alpha7版本。它是在1.0.0-alpha7之后重写的。@arma感谢您更新答案:)谢谢!这正是我想要的。答案肯定是可以接受的-不玩composer.lock文件我有一个版本叫
devmaster1910041
"require": {
    "some/package": "1.2"
}
{
    "require": {
        "radic/tmp-underscore-php": "~1.2.0"
    },
    "replace": {
        "patchwork/utf8": "*"
    }
}