更改依赖项的composer.json时,强制composer重新生成自动加载吗?

ggg*_*eek 6 composer-php

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

  • 安装Symfony
  • 为新捆绑包创建一个git repo,在其中放置composer.json文件
  • 需要使用@dev版本的顶级composer.json中的新软件包
  • composer update newpackage =>使用git clone下载软件包
  • 在供应商内部进行git克隆工作,并从中进行提交和推送

一切都很好,但似乎在一种特定的情况下会中断:如果我更改已经安装的软件包的'autoload'标签,似乎Composer很难考虑到它:

  • 我尝试了'composer dumpautoload',它什么也没做
  • 我不想删除composer.lock文件,因为我不想将其他软件包更新到较新的版本,所以我只想更改该软件包的自动加载配置。
  • 我尝试手动删除vendor / composer / installed.json,结果是Composer重新下载了所有供应商并擦除了当时存在的所有数据

当我确实在单独的克隆上更改了软件包的autoload部分,将更改推送到git并运行了“ composer update mypackage”时,同样的问题也显现了出来-尽管这可能与packagist尚未从github收到ping有关。

我当然可以手动更改composer.lock和vendor / composer / installed.json文件,但这似乎太骇人。它还不能保证用户第一次下载该程序包后,它便会正常运行。

Dav*_*omb 8

尝试:

./composer.phar dumpautoload -o
Run Code Online (Sandbox Code Playgroud)

它读取 composer.json 文件并重新编写所有选择新路径的自动加载文件。


cwe*_*ske 4

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