【问题标题】:Updating Composer autoload files without `composer update`?在没有`composer update`的情况下更新Composer自动加载文件?
【发布时间】:2015-02-14 04:59:29
【问题描述】:

我正在开发一个项目,该项目有很多我个人控制的依赖项。每当需求中的命名空间映射发生变化时,我都需要运行 composer update 来刷新 Composer 自动加载文件,以便获取命名空间映射。

但是,如果我直接在vendor/ 目录中进行更改,则无需通过composer update 查看最新版本——我只需要刷新自动加载文件即可。对于托管在 GitHub 上的具有数十个需求的项目,composer update 可能需要几分钟时间。

有什么方法可以让composer 刷新自动加载文件不必运行composer update

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

    能否修改vendor/composer/installed.json,然后运行composer dump-autoload

    【讨论】:

    • 请进一步解释。这与超过 5 岁的 Sven 的答案有何不同?
    • 当您必须在vendor 中更改一些composer.json 时,只需运行dump-autoload 不会获取更改,有时可能需要在部署之前进行本地调试,为此:在@987654326 中搜索@ 用于更改的包并使用您的预期更改手动更新自动加载部分。
    【解决方案2】:

    composer install 和/或composer dump-autoload 也会这样做。 (dump-autoload documentation)

    【讨论】:

    • 这实际上并没有获取vendor/ 目录中的任何更改。例如如果我更改 vendor/*/*/composer.json 中的自动加载器命名空间,这些命令都不会选择它。
    • 你不应该这样直接修改你的供应商目录。
    • 相反,您应该在依赖项的存储库中进行更改,然后只更新该依赖项 (composer update [packagename])
    • 不要使用类映射自动加载器,使用 PSR-4 或 PSR-0,并相应地提前计划。一个包通常应该负责在一个命名空间中添加类。这样,在现有命名空间中添加新类时,您永远不必更新自动加载器。
    猜你喜欢
    • 2019-01-22
    • 2017-03-04
    • 2019-02-22
    • 2017-03-28
    • 2020-09-16
    • 2015-01-18
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多