通过composer install使用PHP构建工具会导致许多依赖项

时间:2014-07-30 13:40:54

标签: php phpunit composer-php toolchain

我正在建立一个新系统以进行持续集成和交付。

由于PEAR即将为大多数软件包(如phpunit)提供EOL,我转而使用作曲家,这似乎是一个好主意,因为我需要它用于项目。

所以为了测试我的集成服务器,我开始使用一个非常简单的composer.json:

{
    "require-dev": {
        "phpunit/phpunit": "4.1.*",
        "phpmd/phpmd" : "2.0.*",
        "pdepend/pdepend" : "2.0.0",
        "zerkalica/php-code-browser": "dev-master",
        "squizlabs/php_codesniffer": "1.*",
        "sebastian/phpcpd": "*",
        "phpdocumentor/phpdocumentor": "dev-master"
    }
}

这会导致 230MB供应商目录

有关已安装的软件包的完整列表,请参阅: https://gist.github.com/rufinus/14b271f61e143364452f

这是预期的结果吗?

我应该切换到PHAR文件并将它们存储在项目内的bin目录中吗?

最佳做法是什么? (没有梨)

1 个答案:

答案 0 :(得分:1)

您可以配置composer来下载每个包而不是克隆它。这样可以节省一些空间和时间。

{
    "require-dev": {
        "phpunit/phpunit": "4.1.*",
        "phpmd/phpmd" : "2.0.*",
        "pdepend/pdepend" : "2.0.0",
        "zerkalica/php-code-browser": "dev-master",
        "squizlabs/php_codesniffer": "1.*",
        "sebastian/phpcpd": "*",
        "phpdocumentor/phpdocumentor": "dev-master"
    },
    "config": {
        "preferred-install": "dist"
    }
}

要进行测试,请移除vendorcomposer.lock并再次运行composer install。现在它应该下载每个包,而不是克隆它。

作为旁注。尝试使用特定版本而不是“*”或“dev-master”。例如phpcpd我肯定知道它经常被标记。