不要更新特定的程序包



有没有办法告诉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 installupdate上的patchwork/utf8包将被忽略。

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

更新:仅适用于composer 1.0.0-alpha6及更低版本。在1.0.0-alpha7及更高版本中使用它将删除"require-dev"中的所有包

我相信,如果你能在你的项目中负担得起,目前你可以用一些混乱来欺骗作曲家。类似于:将所有不想更新的包放在"require-dev"中,并使用composer update --no-dev 运行更新

请注意,如果您运行composer install,我记得它们将从您的项目中删除。

所有这些伎俩真的很恶心,所以我们应该等待官方的方式来做这样的事情,我个人会更新明确指定它们的包

相关内容

  • 没有找到相关文章