我们说我有一个包含多个部分的库,比如A和B.
在应用程序中,我需要该库但仅使用A部分。这是通过应用程序中可以动态读取的配置设置来定义的。
现在A和B对其他包有不同的要求。
如果仅使用A,我怎么才能要求A依赖?
显而易见的答案是将该库拆分为两个库。但是图书馆目前尚未拆分,需要大量工作才能完全改变工作流程 - 这是我们不想要的。想想例如。 Zend Framework也只是一个单独的库。
答案 0 :(得分:1)
执行此操作的最佳方法是从您的"要求"中删除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"。
虽然此解决方案是最常用和最简单的解决方案之一,但拆分包是更好的选择。另请参阅" There’s no such thing as an optional dependency"