【问题标题】:How do I force composer dump-autoload to start from scratch?如何强制 composer dump-autoload 从头开始​​?
【发布时间】:2020-04-05 09:16:01
【问题描述】:

我应该手动删除的确切文件集是什么,以确保后续调用 composer dump-autoload 的行为与在刚刚被 composer installed 的处女新克隆的作曲家项目中完全相同,但是以前从未dump-autoloaded?

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

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

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

【问题讨论】:

    标签: php composer-php autoload


    【解决方案1】:

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

    创建的文件是vendor/autoload.phpvendor/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

    【讨论】:

    • 谢谢!我可能错了,但是当自动加载文件的重新生成碰巧是幂等时,composer 似乎会抑制某些警告(特别是某些类不符合 PSR-4)。除非我删除生成的文件,否则我无法再次看到这些警告。
    • 也许你是对的。还没有看到这方面的证据,但以上内容应该允许您从头开始生成自动加载器。
    猜你喜欢
    • 2013-12-14
    • 2018-06-06
    • 2016-09-11
    • 1970-01-01
    • 2018-09-09
    • 2016-01-23
    • 2017-03-05
    • 2013-06-15
    • 2018-07-17
    相关资源
    最近更新 更多