Laravel 编写器失败,包需要在require dev中使用另一个包
我正在用Laravel 4开发一个应用程序,我必须为它开发一个包,我的包(我们称之为xPAckage)需要这个包vespakoen/菜单,正如您在github上看到的那样 我必须在中将其添加到xPackage composer.jsonLaravel 编写器失败,包需要在require dev中使用另一个包,laravel,laravel-4,composer-php,packages,Laravel,Laravel 4,Composer Php,Packages,我正在用Laravel 4开发一个应用程序,我必须为它开发一个包,我的包(我们称之为xPAckage)需要这个包vespakoen/菜单,正如您在github上看到的那样 我必须在中将其添加到xPackage composer.json require-dev 但问题是,运行composer安装应用程序不会安装其软件包的require dev内容,它只安装其软件包 require part or require-dev 它自己的 如果我把它放在xPAckage的require部
require-dev
但问题是,运行composer安装应用程序不会安装其软件包的require dev内容,它只安装其软件包
require part or require-dev
它自己的
如果我把它放在xPAckage的require部分,在运行composer更新时会出现以下错误
- The package is not available in a stable-enough version according to your min
imum-stability setting
我应该如何解决这个问题
编辑:(11月23日)
xPackage composer.json如下所示:
{
"name": "packageName/xPcakge",
"description": "package description",
"keywords": ["xPAckage"],
"authors": [
{
"name": "user",
"email": "email@domain.net"
}
],
"require": {
"php": ">=5.4.0",
"zofe/rapyd": "1.3.*",
"vespakoen/menu": "dev-master"
},
"autoload": {
"classmap": [
"src/controllers",
"src/views",
"src/models"
]
}
}
这是应用程序的composer.json文件
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "4.2.*"
},
"require-dev": {
"packageName/xPcakge" : "dev-master"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
}
}
请查看此处并尝试一些不同的版本:
例如:“vespakoen/menu”:“2.0.15”看看这里,尝试一些不同的版本:
例如:“vespakoen/menu”:“2.0.15”您的软件包
packageName/xPackage
需要vespakoen/menu
按分支名称(dev master
)。当composer导入该包时,它将其视为带有@dev
标志。因此,packageName/xPackage
与稳定性级别dev
有依赖关系。当composer尝试导入xPackage
时,它也会加载其所有依赖项。但是,当它点击vespakoen/menu
时,它会看到它有一个dev
稳定性级别。您的应用程序没有明确设置稳定性,因此其级别为stable
。这两个层次相互冲突。你可以:
- 将应用程序的稳定性级别降低到dev,不推荐使用。
这将允许composer将任何开发人员级别的软件包安装到您的应用程序中
应用程序。在应用程序的
中:composer.json
{ “最小稳定性”:“dev” }
- 使用稳定版本的
。请转到相应的,然后选择标记的版本。这是首选方法。在包的vespakoen/menu
中:composer.json
{ “要求”:{ “vespakoen/menu”:“~2.0” } }
- 在应用程序中明确要求
vespakoen/菜单
。这将告诉composer覆盖此情况下的默认最小稳定性。在应用程序的
中:composer.json
{ “要求”:{ “vespakoen/菜单”:“开发主机” } }
packageName/xPackage
需要分支名称(dev master
)的vespakoen/menu
)。当composer导入该包时,它将其视为带有@dev
标志。因此,packageName/xPackage
与稳定性级别dev
有依赖关系。当composer尝试导入xPackage
时,它也会加载其所有依赖项。但是,当它点击vespakoen/menu
时,它会看到它有一个dev
稳定性级别。您的应用程序没有明确设置稳定性,因此其级别为stable
。这两个层次相互冲突。你可以:
- 将应用程序的稳定性级别降低到dev,不推荐使用。
这将允许composer将任何开发人员级别的软件包安装到您的应用程序中
应用程序。在应用程序的
中:composer.json
{ “最小稳定性”:“dev” }
- 使用稳定版本的
。请转到相应的,然后选择标记的版本。这是首选方法。在包的vespakoen/menu
中:composer.json
{ “要求”:{ “vespakoen/menu”:“~2.0” } }
- 在应用程序中明确要求
vespakoen/菜单
。这将告诉composer覆盖此情况下的默认最小稳定性。在应用程序的
中:composer.json
{ “要求”:{ “vespakoen/菜单”:“开发主机” } }
- 永远不要要求分支!始终需要版本,最好是依赖项的版本范围
不幸的是,许多安装说明采用了简单的方式,并建议要求“dev master”作为其版本。这是错误的
如果项目宣布根据语义版本控制发布新版本,则使用tilde操作符要求满足所需功能的最低版本,如
~2.1
。这将告诉您至少需要版本2.1.0,但只要不引入不兼容的更改(这将是一个新的主要版本3.0.0),任何更好的版本都可以
如果项目没有宣布类似的内容,那么如果您有证据证明项目在过去破坏了“兼容”版本,并且没有纠正这一点,那么
2.1.*
的版本要求可能是正确的。这种情况不太可能发生,而且更糟糕,因为你强迫自己的用户使用特定版本的依赖项,而无法免费升级。永远不需要分支!始终需要版本,最好是依赖项的版本范围
不幸的是,许多安装说明采用了简单的方式,并建议要求“dev master”作为其版本。这是错误的
如果项目宣布根据语义版本控制发布新版本,则使用tilde操作符要求满足所需功能的最低版本,如~2.1
。这将告诉您至少需要版本2.1.0,但只要不引入不兼容的更改(这将是一个新的主要版本3.0.0),任何更好的版本都可以
如果项目没有宣布类似的内容,那么如果您有证据证明项目在过去破坏了“兼容”版本,并且没有纠正这一点,那么2.1.*
的版本要求可能是正确的。这种情况不太可能发生,而且更糟糕