我有一个包含测试套件的Composer软件包。
测试套件具有一些仅对测试有用的组件,并且这些组件会通过require-dev
自动加载,以确保您不作为软件包使用者使用它们。
现在,事实证明,还有其他一些软件包毕竟需要将其中一些组件用于其测试套件。
我不想想要做的就是简单地通过将这些组件从require-dev
移到require
来使它们自动加载,因为同样,这些是我们应该只依靠测试。
我也不想将这些测试组件移到单独的程序包中,因为我希望它们与它们所属的程序包一起进行版本控制。
我想做的是添加某种 sub 包。
这将包含这些测试组件的自动加载配置,例如acme/foo
包含一个子软件包acme/foo-test
,其他软件包(以及软件包本身)可以显式添加到其require-dev
中-使得可以与其他软件包共享这些测试相关性仅用于测试,例如不会在生产环境中污染自动装带器。
一个包是否有可能定义可以从其他包中安装的子包?
编辑:我也不想使用“ hack”,例如实际上将自动加载规则添加到其他软件包中,例如"Acme\\Foo\\Test\\": "vendor/acme/foo/src/Test"
。 (甚至不确定这是否行得通。)