假设我有一个包含多个部分的库,比如a和B。
在应用程序中,我需要该库,但仅使用部分A。这是通过应用程序中可以动态读取的配置设置来定义的。
现在A和B对其他软件包有不同的要求。
如果只使用A,我怎么可能只需要A依赖项
显而易见的答案是将该库拆分为两个库。但该库目前尚未拆分,这将需要大量工作,并将彻底改变工作流程——这是我们不希望的。想想Zend Framework,它也是一个单独的库。
最好的方法是从"需要"部分删除A和B,并将它们添加到"建议"部分(包括简短描述):
{
...
"suggest": {
"a/a": "to be able to use X (1.*)",
"b/b": "to be able to use Y (~1.3)"
}
}
现在,当用户安装软件包时,会收到一条显示建议软件包的消息:
package/package suggests installing "a/a": to be able to use X (1.*)
package/package susgests installing "b/b": to be able to use Y (~1.3)
安装软件包的用户现在应该自行决定是否也需要"a/a"或"b/b"。
虽然此解决方案是最常用、最简单的解决方案之一,但它是拆分包的更好选择。另请参阅"没有可选依赖项"