作曲家失败,包需要在 require-dev 中另一个包



我正在使用Laravel 4开发一个应用程序,我必须为它开发一个软件包,我的软件包(我们称之为xPAckage)需要这个软件包vespakoen/menu,正如你从它的github中看到的那样。https://github.com/vespakoen/menu我必须将其添加到xPackage composer.json中

      require-dev

但问题是,通过运行作曲家安装应用程序,它不会安装其软件包的require-dev的内容,它只会安装软件包

require part or require-dev 

它自己的。

如果我把它放在xPAckage的要求部分,我在运行作曲家更新时会出现以下错误,

 - 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"
 }
}

您的软件包packageName/xPackage需要按分支名称 ( dev-master ) 进行vespakoen/menu。当作曲家导入该包时,它会将其视为带有@dev标志。所以packageName/xPackagedev的稳定性水平有依赖关系。当作曲家尝试导入xPackage时,它也会加载它的所有依赖项。然而,当它击中vespakoen/menu时,它看到它有一个dev的稳定性水平。您的应用(由于未显式设置稳定性)具有 stable 级别。这两个层次是冲突的。您可以:

  • 不建议将应用的稳定性级别降低到开发。这将允许作曲家将任何开发级别的包安装到您的.app。在应用的composer.json中:

    {
        "minimum-stability": "dev"
    }
    
  • 使用稳定版本的 vespakoen/menu 。转到它的包装师页面并选择标记版本。这是首选方法。在您的包裹composer.json

    {
        "require": {
            "vespakoen/menu": "~2.0"
        }
    }
    
  • 要求在应用中显式vespakoen/menu。这将告诉作曲家覆盖这一种情况的默认最小稳定性。在应用的composer.json中:

    {
        "require": {
            "vespakoen/menu": "dev-master"
        }
    }
    

看看这里并尝试一些不同的版本:https://packagist.org/packages/vespakoen/menu

例如:"vespakoen/menu":"2.0.15"

永远不需要分支!始终需要版本,最好是依赖项的版本范围。

不幸的是,许多安装说明采取了简单的路线,并建议需要"dev-master"作为他们的版本。这是错误的。

如果项目宣布根据语义版本控制发布新版本,则需要满足所需功能的最低版本,并使用波浪号运算符,如 ~2.1 。这将表明您至少需要版本 2.1.0,但只要不引入不兼容的更改(这将是新的主要编号 3.0.0),任何更好的都可以。

如果项目没有宣布类似的东西,如果你有证据证明该项目过去破坏了"兼容"版本并且没有纠正这一点,则版本要求 2.1.* 可能是正确的。这种情况不太可能发生,而且它是更令人讨厌的变体,因为您强迫自己的用户使用特定版本的依赖项,而无法自由升级它。

相关内容

  • 没有找到相关文章

最新更新