作曲家抛出错误 "Could not find package with stability stable."

Composer throws error "Could not find package with stability stable."

我尝试用 composer 发布一个项目。该项目位于 github,并通过 packagist.org 发布。

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

"Could not find package madskullcreations/simplicity with stability stable."

我使用以下命令:

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

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

像我这样的初学者,我什至不知道在哪里定义包 "stability",在 github 或 packagist 找不到任何东西。

请帮我开始吧!


工作解决方案:

我最终在 Flying 的帮助下完成了它的工作,请在下面查看他的回答。因为我认为让 composer 正常工作有点复杂,我试着把我为让它工作所做的步骤放在这里:

  1. 在 github 创建存储库。
  2. 用你的依赖创建一个 composer.json。签到。
  3. 释放它。某处有一个"Releases" link,使用它并给发布一个名字。

现在,要在测试期间跳过 packagist.org 步骤,请按照以下步骤操作。在 packagist.org 上发布一个无效的解决方案(就像我所做的那样)不是好的风格,并且将所有必要的步骤重复十遍一点也没有乐趣。

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

把这样的东西放进去:

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

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

composer create-project

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

并且,阅读 composer 给出的错误信息并确保你理解它们。它们很有用。我的头痛是缺少 PHP-extension (intl),我假设它使用的是 php 7.1 版,而它实际上听取了我在 composer.json 文件中的要求,并使用了 v5。 6. (我在iis里安装了好几个php版本,但是我的脑袋没考虑到。)

包的稳定性要求被定义到你的项目composer.jsonminimum-stability设置中,而不是外部包的composer.json

您在 Packagist 上的 madskullcreations/simplicity package have no releases defined so the only branch that is available in it - is dev-master "release" (it can be seen at the right side of package page)。此 "release" 具有 "dev" 稳定性级别。

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

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

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

此外,将您的测试包发布到 public 注册表(如 Packagist)通常是一种不好的做法。相反,您应该按照 here 的说明在您的 composer.json 中使用直接存储库规范。在你的情况下它将是:

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

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