Composer抛出错误"无法找到稳定性稳定的包。"

时间:2017-12-30 13:25:53

标签: php composer-php cakephp-3.0

我试图用作曲家发布一个项目。该项目位于github,并通过packagist.org发布。

但是当我尝试使用composer创建我的项目时,它会失败并显示以下错误信息:

  

"无法找到包装madskullcreations /简单性和稳定性   。稳定"

我使用以下命令:

composer create-project madskullcreations/simplicity

composer.json包含:

{
    "name": "madskullcreations/simplicity",
    "description": "Website made simple!",
    "homepage": "https://madskullcreations.com",
    "type": "project",
    "license": "GPL-3.0-or-later",
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.6",
        "cakephp/cakephp": "3.5.*"
    }
}

我的存储库只包含一个用于测试的文件。怎么了?我试图删除依赖项,整个"要求" -block,但没有真正的变化......

初学者和我一样,我甚至不知道我在哪里定义包裹"稳定性",无法在github或packagist找到任何东西。

请帮助我开始吧!

工作解决方案:

我最终得到了飞行的帮助,看到他的答案进一步向下。因为我觉得让作曲家工作起来有点复杂,所以我试着把我做的步骤放到这里来实现:

  1. 在github上创建一个存储库。
  2. 使用您的依赖项创建一个composer.json。检查一下。
  3. 发布它。有一个"发布"在某处链接,使用它并为发布版命名。
  4. 现在,要在测试期间跳过packagist.org步骤,请按照以下步骤操作。在packagist.org上发布一个不起作用的解决方案(就像我做的那样)并不是一种好的风格,并且完成十次所需的所有步骤并不是一件好事。

    在某处创建一个本地文件夹,并在那里创建一个新的composer.json文件。

    把这样的东西放进去:

    {
      "require": {
        "madskullcreations/simplicity":"dev-master@dev"
      },
      "repositories": [
        {
           "type": "vcs",
           "url": "https://github.com/madskullcreations/simplicity" 
        }
      ]
    }
    

    在新文件夹中运行以下命令:

    composer create-project
    

    现在应该下载并安装您的项目。

    并且,阅读作曲家提供的错误消息,并确保您理解它们。它们很有用。我的头痛是缺少PHP扩展(intl),我认为它使用的是php 7.1版,而它实际上是在composer.json文件中听取了我的要求,并使用了v5.6。 (我在iis中安装了几个php版本,但我的模糊头并没有考虑到这一点。)

1 个答案:

答案 0 :(得分:5)

软件包稳定性要求定义为您的项目 composer.json的{​​{3}}设置,而不是外部软件包的composer.json

您的minimum-stability软件包已定义madskullcreations/simplicity,因此其中唯一可用的分支是dev-master“release”(可以在{{3}的右侧看到)在Packagist上)。这个“释放”具有“开发”稳定性水平。

由于上述原因,如果您要求将此软件包放入项目中,而无需设置minimum-stability: dev或未指定软件包的稳定性要求

"require": {
  "madskullcreations/simplicity":"dev-master@dev"
} 

(请注意@dev版本要求)抱怨缺乏兼容版本是Composer的正确行为。

将测试包发布到像Packagist这样的公共注册表中通常也是不好的做法。相反,您应该按照no releases的说明将直接存储库规范用于composer.json。在你的情况下,它将是:

"repositories": [
  {
     "type": "vcs",
     "url": "https://github.com/madskullcreations/simplicity" 
  }
]

指定直接存储库引用后 - 从Packagist中删除测试包是安全的,除非您真的想与开源社区共享它。