如何强制 composer dump-autoload 从头开始​​?

How do I force composer dump-autoload to start from scratch?

我应该手动删除的确切文件集是什么,以确保后续调用 composer dump-autoload 的行为与在刚刚 composer installed,但以前从未 dump-autoloaded?

我正在尝试重现和调试 composer dump-autoload 命令作为 docker 图像构建的一部分执行期间出现的问题。

我想避免在寻找解决方案的迭代过程中实际 运行 构建 docker 数十次的缓慢。

每次删除整个 vendor/ 目录并重做 composer install 也是次优的。

它总是从 "scratch" 开始运行。但我想如果你想更加确定,你可以简单地删除以前生成的文件。

创建的文件是 vendor/autoload.php,还有一些在 vendor/composer,因此您可以在重新转储自动加载器之前手动删除它们。

这些是刚从 composer install --no-autoloader:

中取出的那个目录的内容
└── vendor/
   └── composer/
      ├── semver/
      ├── xdebug-handler/
      ├── installed.json
      └── LICENSE

这些是 运行 composer dump-autoload:

之后的内容
├── vendor/
│   └── composer/
│      ├── semver/
│      ├── xdebug-handler/
│      ├── autoload_classmap.php
│      ├── autoload_files.php
│      ├── autoload_namespaces.php
│      ├── autoload_psr4.php
│      ├── autoload_real.php
│      ├── autoload_static.php
│      ├── installed.json
│      └── LICENSE
└── autoload.php

所以你基本上只需要删除

  • vendor/autoload.php
  • vendor/composer/autoload_*
  • vendor/composer/ClassLoader.php

您可以从原始起点重新运行 composer dump-autoload