Composer不会安装“require-dev”软件包

时间:2014-01-16 05:46:20

标签: composer-php

我正在尝试使用Laravel进行一些开发,出于某种原因,我无法安装任何依赖项require-dev中的composer.json部分中列出的任何软件包文件。默认情况下应该安装AFAIK,dev依赖项。我已经在--dev上使用composer install标记并使用了vendors/标记。我还尝试删除composer.lock的内容并删除~/.composercomposer update并从头开始重新安装所有依赖项,但仍然没有运气。我也尝试了vendor/laravel/framework/composer.json命令的各种迭代。

例如,在"require-dev": { "aws/aws-sdk-php": "2.4.*", "iron-io/iron_mq": "1.4.*", "pda/pheanstalk": "2.1.*", "mockery/mockery": "0.8.0", "phpunit/phpunit": "3.7.*" }, 中,它列出了这些:

composer.json

这些都没有安装。有什么想法我错过了什么?这是我的主要{ "name": "laravel/laravel", "description": "The Laravel Framework.", "keywords": ["framework", "laravel"], "license": "MIT", "require": { "laravel/framework": "4.0.*", "rncryptor/rncryptor-php": "1.*" }, "autoload": { "classmap": [ "app/commands", "app/controllers", "app/models", "app/libraries", "app/database/migrations", "app/database/seeds", "app/tests/TestCase.php" ] }, "scripts": { "post-install-cmd": [ "php artisan optimize" ], "pre-update-cmd": [ "php artisan clear-compiled" ], "post-update-cmd": [ "php artisan optimize" ], "post-create-project-cmd": [ "php artisan key:generate" ] }, "config": { "preferred-install": "dist" }, "minimum-stability": "dev" } 文件,FWIW。

composer self-update

我跑了composer --version,所以它应该是最新版本。正在运行Composer version b20021cc6aa113069e4223b78d0074a1fc7dd4e8 2014-01-14 16:22:09 会显示:

{{1}}

2 个答案:

答案 0 :(得分:23)

Composer只安装你的master composer.json文件的“require-dev”列表,如果这些软件包确实需要别的东西,那么只安装他们的“require”软件包,而不是他们的“require-dev” “包裹。

这实际上是件好事。如果您想开发一个包,您将克隆其存储库,安装开发所需的所有内容,并准备好贡献。但是,如果您需要为自己的软件提供该软件包,那么开发该特定软件包就没有用例 - 这是开发自己软件的用例。

所以tl; dr:Composer只安装composer.json的开发需求,而不是任何依赖项。

答案 1 :(得分:2)

有一个解决方案可以将供应商的require-dev软件包安装到您的项目中。

https://github.com/wikimedia/composer-merge-plugin

将其添加到项目的composer.json中

{
    "require": {
        "wikimedia/composer-merge-plugin": "dev-master"
    },
    "extra": {
        "merge-plugin": {
            "include": [
                "vendor/laravel/framework/composer.json"
            ]
            "recurse": true,
            "replace": false,
            "ignore-duplicates": false,
            "merge-dev": true,
            "merge-extra": false,
            "merge-extra-deep": false,
            "merge-scripts": false
        }
    }
}

拥有"merge-dev": true,非常重要 跑

composer update

" vendor / laravel / framework / composer.json"的require-dev包。将安装在您的项目中。