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

Sno*_*arg 5 php composer-php cakephp-3.0

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

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

"无法找到包装madskullcreations /简单稳定稳定."

我使用以下命令:

composer create-project madskullcreations/simplicity
Run Code Online (Sandbox Code Playgroud)

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.*"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

请帮我开始吧!


工作方案:

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

  1. 在github上创建一个存储库.
  2. 使用您的依赖项创建composer.json.检查一下.
  3. 释放它.某处有"Releases"链接,使用它并为发布版命名.

现在,要在测试期间跳过packagist.org步骤,请按照以下步骤操作.在packagist.org上发布一个不起作用的解决方案(就像我做的那样)并不是一种好的方式,完成十次所需的所有步骤并不是一件好事.

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

把这样的东西放进去吧:

{
  "require": {
    "madskullcreations/simplicity":"dev-master@dev"
  },
  "repositories": [
    {
       "type": "vcs",
       "url": "https://github.com/madskullcreations/simplicity" 
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

composer create-project
Run Code Online (Sandbox Code Playgroud)

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

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

Fly*_*ing 6

包稳定性要求定义为项目的minimum-stability设置,composer.json而不是外部包的设置.composer.json

你的madskullcreations/simplicity软件包没有定义版本,所以它中唯一可用的分支 - 是dev-master"release"(它可以在Packagist 的包页面的右侧看到).这个"释放"具有"开发"稳定性水平.

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

"require": {
  "madskullcreations/simplicity":"dev-master@dev"
} 
Run Code Online (Sandbox Code Playgroud)

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

通常,将测试包发布到像Packagist这样的公共注册表中也是不好的做法.相反,你应该使用直接仓库规格到您composer.json的解释在这里.在你的情况下,它将是:

"repositories": [
  {
     "type": "vcs",
     "url": "https://github.com/madskullcreations/simplicity" 
  }
]
Run Code Online (Sandbox Code Playgroud)

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