21

有没有办法告诉作曲家,每次我做一个composer update我希望他忽略一个特定的包?

4

4 回答 4

39

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

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

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

"require": {
    "some/package": "1.2"
}
于 2014-10-15T14:29:10.883 回答
6

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

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

为此,只需从composer.lock

于 2013-06-26T08:02:25.797 回答
3

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

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

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

所有这些诡计真的很讨厌,所以我们应该等待官方的方式来做这样的事情,我个人更新包明确指定它们

于 2015-01-26T14:29:19.913 回答
3

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

这是composer.json应该工作的文件示例:

{
    "require": {
        "radic/tmp-underscore-php": "~1.2.0"
    },
    "replace": {
        "patchwork/utf8": "*"
    }
}

在此示例中,patchwork/utf8包将在composer install或上被忽略update

要排除特定版本,请参阅:作曲家排除特定版本

于 2017-12-14T23:27:36.490 回答