2014-01-16 106 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「將安裝在您的項目中。