我为laravel创建了自己的composer包,并使用subversion来管理版本等.Composer不会从我们自己的包中安装require和require-dev包。
我的主要项目作曲家
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"repositories": [
{
"type": "svn",
"url": "https://path/to/package/title/"
}
],
"license": "MIT",
"type": "project",
"require": {
"php": ">=7.2.0",
"laravel/framework": "5.5.*",
"company/package-name": "~1.0.0"
},
包composer.json
{
"name": "company/package-name",
"require": {
"php": ">=7.2.0",
},
"require-dev": {
"phpunit/phpunit": "^6.0",
"orchestra/testbench": "^3.5"
},
}
在这种情况下,从未安装orchestra / testbench。当我在主项目composer.json中添加它时,它将被安装,但是当它在包composer.json中时,composer将不会安装它。
谁能告诉我我的设置有什么问题?
require-dev
字段是一个“仅root”字段,只有在您将项目安装为root package(换句话说,不作为依赖项)时才会考虑。您的“主项目”是根包的示例。
require-dev
是一个“仅限root”字段的原因是,它旨在指定只有当有人想要在此包上开发或运行其测试时才需要的包要求。
如果你想安装orchestra/testbench
,我假设你想在你的主包中使用它来开发测试。在这种情况下,我建议将其添加到主包的require-dev
字段中。
如果您不需要在主项目中使用orchestra/testbench
软件包,则无需担心安装它。使用company/package-name
包不需要它。
在正常情况下,不应考虑将dev软件包用于应用程序的最终构建。如果您需要此依赖项,可以尝试将其移至require部分。