Composer php 当依赖项的composer.json发生更改时,是否强制composer重新生成自动加载?

Composer php 当依赖项的composer.json发生更改时,是否强制composer重新生成自动加载?,composer-php,Composer Php,我开发Symfony捆绑包的工作流程如下: 安装Symfony 为新的bundle创建一个git repo,在其中放置一个composer.json文件 需要顶级composer.json中的新包,使用@dev version composer update newpackage=>使用git clone下载包 在供应商内部处理git克隆,提交并从中推送 这一切都很好,但似乎在一个具体案例中有所突破: 如果我更改已经安装的软件包的“autoload”标记,那么Composer似乎很难将其考虑

我开发Symfony捆绑包的工作流程如下:

  • 安装Symfony
  • 为新的bundle创建一个git repo,在其中放置一个composer.json文件
  • 需要顶级composer.json中的新包,使用@dev version
  • composer update newpackage=>使用git clone下载包
  • 在供应商内部处理git克隆,提交并从中推送
这一切都很好,但似乎在一个具体案例中有所突破: 如果我更改已经安装的软件包的“autoload”标记,那么Composer似乎很难将其考虑在内:

  • 我尝试了“composer dumpautoload”,但它没有任何效果
  • 我不想删除composer.lock文件,因为我不想将其他软件包更新为新版本,我只想更改该软件包的自动加载配置
  • 我试图手动删除vendor/composer/installed.json,结果是composer重新下载了所有的供应商,并删除了当时碰巧在那里的所有数据
当我在一个单独的克隆上更改了包的自动加载部分,将更改推送到git并运行“composer update mypackage”时,同样的问题也出现了——尽管这可能与packagist没有收到github的ping有关


当然,我可以手动修改composer.lock和vendor/composer/installed.json文件,但这似乎太草率了。它也不能保证用户第一次下载包时会看到它工作。

dumpautoload
使用来自
vendor/composer/installed.json的包信息,而不是单个
composer.json
文件。您还需要在那里更改自动加载信息。

尝试:

./composer.phar dumpautoload -o

它读取composer.json文件并重新写入所有自动加载的文件,这些文件拾取了新路径。

只有在运行

composer update

在哪里运行“dumpautoload”?它应该位于顶部项目目录中。或者:
composer更新您的/bundle
将只更新此文件,而不更新其他内容。@sven我正在顶层目录中运行composer。我的观点是,当我运行composer update My/bundle时,composer似乎没有“看到”它必须更新它(从某种意义上说,这是正确的,因为本地副本已经是master上的最新git commit),而且它不会重新生成反映my/bundle/composer.jsonI中更改的自动加载。因此,您很难理解您所做的操作。你能准备一个小例子来展示你的经历吗?你在改变什么?具体在哪里?命令的输出是什么?PHP的确切错误消息是什么?“作曲家有一段艰难的时光……”并没有准确地描述问题,而是“它不起作用,我不会告诉你什么时候出了问题,为什么出了问题”。这似乎很明显是他想要的!他希望对composer.json文件进行更改,并重新生成所有自动加载文件,以便所有路径和节点都指向新位置。当你进行作曲家更新时,它必须在下载所有文件后运行一些东西,这些文件会重新生成所有自动加载的内容,那么它是什么,他如何单独运行。谢谢。哪里能找到?