我差不多一年前就我喜欢的作曲家包开了一个问题:jobby(它允许用PHP管理CRON任务):see issue
我对这个包的问题是作曲家供应商的lib是在一个名为BackgroundJob.php(see file)的文件中硬编码的
if (file_exists('vendor/autoload.php')) {
require('vendor/autoload.php');
} else {
require(dirname(dirname(dirname(dirname(dirname(__DIR__))))) . '/vendor/autoload.php');
}
但我的供应商目录不是"供应商"但是" php / lib"它不是可以讨厌的;)
我丑陋的解决方案是硬编码自动加载文件的路径,但每次安装lib时我都必须手动编辑BackgroundJob.php。
由于供应商lib可以是任何深度,我真的在徘徊什么是这个问题的好解决方案:显然,Jobby并不是唯一需要运行其他库的库。你能指点我一个处理它的图书馆,所以我可以看看它或给我你的想法吗?
由于
答案 0 :(得分:0)
我认为没有干净的,没有好的解决方案来安装你自己不在vendor
之外的另一个目录中的软件包,因为这是一个非常糟糕的主意。这是作曲家的设计!这是让作曲家很棒的一件事。有一个nice article关于为什么将软件包安装到vendor
以外的目录中是个坏主意。
如果你有充分的理由不仅仅是"但我想..."你真的需要这样做(我建议不要这样做!)但是你可以用composer scripts做一些技巧。应该可以运行post-package-update
或post-package-install
脚本将包从供应商移动到所需的目录。
但请记住,每个开发人员都会讨厌这样做。有vendor
是第三方软件包的唯一目录的原因。这不仅仅是为了娱乐的限制。
答案 1 :(得分:0)
这是一个糟糕的解决方案,但要做到这一点:
fork that project =>改变代码=>制作自定义套餐
稍后,您可以安装自己的自定义程序包。