我开发Symfony包的工作流程如下:
- 安装Symfony
- 为新包创建一个git仓库,放入一个编译器。json文件在那里
- 要求在顶层编写器中使用新包。使用@dev version
- composer update newpackage =>包被下载,使用git clone
- 在供应商内部的git克隆上工作,从它提交和推送
这一切都很好,但似乎在一个特定的情况下中断:如果我改变已经安装的包的' autolload '标签,似乎Composer很难考虑它:
- 我尝试了'composer dumpautolload ',它什么也不做
- 我不想删除编写器。因为我不希望其他包被更新到一个新版本,我只想改变那个包的自动加载配置
- 我尝试手动删除vendor/composer/installed。发生的事情是Composer重新下载了所有的供应商,并删除了当时发生在那里的任何数据
当我在一个单独的克隆上更改包的自动加载部分,将更改推送到git并运行'composer update mypackage'时,同样的问题也出现了——尽管这可能与packagist没有收到来自github的ping有关。
我当然可以手工修改作曲家。Lock和vendor/composer/installed。Json文件,但这似乎太粗糙了。它也不能保证第一次下载包的用户会看到它工作。
尝试:
./composer.phar dumpautoload -o
它读取composer.json
文件并重写所有选择新路径的自动加载文件。
dumpautoload
使用来自vendor/composer/installed.json
的包信息,而不是单个composer.json
文件。您还需要更改那里的自动加载信息
文件已安装。只有当你运行
时,Json才会更新composer update