2014-01-16 44 views
11

我正在尝试使用Laravel进行一些开发,出于某种原因,我无法安装任何软件包中的require-dev部分列出的任何软件包依赖'composer.json文件。 AFAIK,开发依赖关系应该默认安装。我试过了,没有--dev标志composer install。我也尝试删除vendors/的内容并删除composer.lock~/.composer,并重新从头开始重新安装所有依赖项,但仍然没有运气。我也尝试了composer update命令的各种迭代。作曲家不会安装“require-dev”软件包

例如,在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文件,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" 
} 

我跑composer self-update,所以它应该是最新版本。运行composer --version显示了这个:

Composer version b20021cc6aa113069e4223b78d0074a1fc7dd4e8 2014-01-14 16:22:09 
+0

您是否尝试过使用'--require-dev'标志来强制dev安装? – Cristian

+0

我试过'作曲家安装--require-dev'和'composer update --require-dev',但都给我一个错误,说这个标志不存在。我用'--dev'尝试过,但没有运气。 – curtisdf

回答

19

作曲永远只能安装列为包“要求-dev的”你的主人composer.json文件,如果这些包都需要别的东西,那么只有他们的“要求”包安装,但不是他们的“require-dev”软件包。

这实际上是一件好事。如果你想开发一个软件包,你可以克隆他们的仓库,安装开发所需的所有东西,并准备贡献。但是如果你需要这个软件包来开发你自己的软件,那么开发这个特定软件包就没有用例 - 开发自己的软件就是用例。

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

+1

我明白了。我想我只是不明白文档在什么时候表示“根”的意思。 – curtisdf

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 

和“供应商的要求,开发包/laravel/framework/composer.json“将安装在您的项目中。