我正在尝试使用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的开发需求,而不是任何依赖项.
有一个解决方案可以将供应商的 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 包将安装在您的项目中。
| 归档时间: |
|
| 查看次数: |
9598 次 |
| 最近记录: |