作曲家依赖关系的缓慢更新,尽管有 --prefer-dist 标志

2022-08-30 08:36:02

为什么我的作曲家依赖项最多需要两分钟才能更新,即使没有更改也是如此?

一个流行的建议是附加标志:--prefer-dist

php composer.phar update --prefer-dist

但就我而言,这没有什么区别。下面是我的 composer.json 文件 – 我是否遗漏了一些明显的东西?

{
    "name": "my-namespace/symfony",
    "type": "project",
    "description": "",
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.3.*",
        "doctrine/orm": ">=2.2.3,<2.4-dev",
        "doctrine/doctrine-bundle": "1.2.*",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.3.*",
        "symfony/monolog-bundle": "2.3.*",
        "sensio/framework-extra-bundle": "2.3.*",
        "sensio/generator-bundle": "2.3.*",
        "sensio/distribution-bundle": "2.2.*",
        "my-namespace/my-bundle": "1.0.*"
    },
   "repositories": [
        {
            "type": "vcs",
            "url": "http://username:password@git.com/my-bundle.git"
        }
    ],    
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "dev",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "branch-alias": {
            "dev-master": "2.3-dev"
        }
    }
}

答案 1

此问题通常与在 CLI 环境中加载 xdebug 有关。(是否启用 xdebug 并不重要。

您可以使用以下命令之一检查是否启用了 xdebug。

// Unix
php -m | grep xdebug
// Windows
php -m | findstr xdebug

通过启用最大详细程度和分析信息,可以获得有关操作需要这么长时间的更多信息。(如果要更新程序包,请将安装替换为更新。

composer install --prefer-dist -vvv --profile

答案 2

可能减慢 Composer 速度的因素:

  • 如前所述,会影响作曲家的表现。跑步也会警告你这一点。xdebugcomposer diagnose

  • 正在运行而不是 .人们经常只是不停地奔跑。这使得 Composer 完成整个依赖关系解析过程,无论是否有任何更改。运行 时,Composer 直接从 .lock 文件中获取要求,跳过依赖关系解析过程。只应在应用程序的开发生命周期内运行。即便如此,它也不是你通常必须每天运行的东西。updateinstallupdateinstallupdate

  • 如果您有自己经常更新的特定依赖项,则可以尝试通过运行来简化该过程。composer update vendor/package --with-dependencies

  • 设置为 。这极大地扩展了依赖关系解析器必须考虑的可能性量。你几乎不应该降低到,除非你绝对没有其他选择。研究替代方案,例如临时使用内联标志。minimum-stabilitydevminimum-stabilitydev@dev


推荐