Composer不会安装"require-dev"软件包

cur*_*sdf 14 composer-php

我正在尝试使用Laravel进行一些开发,并且由于某种原因,我无法安装它来安装任何require-dev依赖项composer.json文件中的部分中列出的任何软件包.默认情况下应该安装AFAIK,dev依赖项.我已经尝试过,有没有--dev国旗composer install.我也试着删除的内容vendors/和删除composer.lock,并~/.composer与从头开始重新安装所有的依赖,但仍没有运气.我也尝试过各种迭代的composer 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.*"
},
Run Code Online (Sandbox Code Playgroud)

这些都没有安装.有什么想法我错过了什么?这是我的主要composer.json文件,FWIW.

{
"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"
}
Run Code Online (Sandbox Code Playgroud)

我跑了composer self-update,所以它应该是最新版本.跑步composer --version显示:

Composer version b20021cc6aa113069e4223b78d0074a1fc7dd4e8 2014-01-14 16:22:09
Run Code Online (Sandbox Code Playgroud)

Sve*_*ven 23

Composer只安装列出作为master composer.json文件的"require-dev"的软件包,如果这些软件包确实需要其他软件包,那么只安装它们的"require"软件包,而不是它们的"require-dev"软件包.

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

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


Arn*_*rno 5

有一个解决方案可以将供应商的 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

"merge-dev": true, 跑过很重要

composer update
Run Code Online (Sandbox Code Playgroud)

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