我目前正在研究一个包(cms(,它对某个包(代码生成器(具有开发依赖关系以创建代码。生产中不需要此包。
但是,在创建使用 cms 包的网站时,不会安装开发依赖项(包括代码生成器((顺便说一句,这是正确的作曲家行为(。
但是在开发网站时,需要代码生成器。
有没有办法在安装包时强制安装某个开发依赖项?
这是不可能的。依赖关系可以是包正常工作所必需的(那么它应该在require
部分中并且始终安装(,或者只需要开发此包(那么它应该在require-dev
节中,并且仅在包存储库为 root 时才安装(。两者之间没有任何东西。如果您的软件包需要此代码生成器依赖项才能工作,则它显然无法进入第一类(require
部分(。
通常在这种情况下,最好的解决方案是将此包拆分为 2 个包:常规包和dev
包,所有工具仅在开发过程中使用。所以它应该通过 2 个命令安装:
composer require myvendor/mypackage
composer require myvendor/mypackage-dev --dev
这仍然需要每个人安装两个软件包而不是一个,但如果它被正确记录,这应该不是一个大问题。结果应该更清晰(myvendor/mypackage-dev
包的目的是什么应该很明显(,并为包所有者(他可以轻松地为dev
包添加新依赖项(和最终用户(如果他不想使用此代码生成器,他可以随时跳过安装myvendor/mypackage-dev
(提供更多控制权。