防止元包替换作曲家包

prevent the replacement of composer packages by meta package

假设我想使用单独的 ZF2 模块,例如zendframework/zend-mvc,而不是整个集合 (zendframework/zf2)。假设我还想使用一些依赖于 ZF2 的第三方模块,但它需要像这样的 "meta" 包:

"require": {
    "zendframework/zendframework": "2.*"
}

而不是只指定它实际使用的模块。这造成了我的个人包裹要求如下的情况:

    "zendframework/zend-modulemanager": "2.3.*",
    "zendframework/zend-mvc": "2.3.*",

被元包覆盖:

"replace": {
    ...
    "zendframework/zend-modulemanager": "self.version",
    "zendframework/zend-mvc": "self.version",
    ...
}

所以我最终得到了整个东西,而不仅仅是我想要的选定模块。

是否可以防止替换?如果是这样,那又如何呢?是否可以完全忽略 "offending" 包的依赖关系?

我想这样做的原因有两个:我希望我的供应商目录中的代码更少,并且当我实际不使用的某些软件包最终被标记为易受攻击或不稳定时,我不会收到任何误报。

一个后续问题:当只需要部分框架时,任何人都可以权衡自动加载器的性能提升(如果有的话)吗?

参考: zf2 manifest

一个选择是分叉有问题的第三方模块,更改要求并向作者提交拉取请求。如果作者不能快速合并 PR,您可以同时使用您的分叉版本。

如果您看到仅使用部分框架的任何性能提升,我会感到非常惊讶。