Composer Json 正则表达式模式验证错误 ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.] ?|-{0,2})[a-z0-9]+)*$

Composer Json Validation Error for regex pattern ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$

所以我尝试将 composer 和 laravel 安装到 Phpstorm 中,但现在似乎在 php 中安装 composer.json 文件时出现问题。 PHP 版本为 7.4.8。错误码如下图

   "./composer.json" does not match the expected JSON schema:
    - name : Does not match the regex pattern ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$

我试图查找它以寻求帮助,但它并没有让我走得足够远,所以我想知道是否有人可以帮助我解决这个问题。

这就是我的 composer.json 的样子。

{
  "name": "vendor_name/PhpProjec",
  "description": "description",
  "minimum-stability": "stable",
  "license": "proprietary",
  "authors": [
    {
      "name": "***",
      "email": "email@example.com"
    }
  ],
  "require": {
    "barryvdh/laravel-ide-helper": "v2.7.0"
  }

您可能正在使用 Composer v2 吗?当我使用 Composer v1 在我的本地环境中使用给定的 JSON 时,它告诉我:

Deprecation warning: Your package name vendor_name/PhpProjec is invalid, it should not contain uppercase characters. We suggest using vendor_name/php-projec instead. Make sure you fix this as Composer 2.0 will error.

我的系统上没有出现您提供的错误消息。如果您使用其他包名后仍然遇到问题,请分享更多详细信息

composer 从 v1.9 开始区分大小写... 所以将“PhpProject”更改为“phpproject”

   {
  "name": "vendor_name/phpproject",
  "description": "description",
  "minimum-stability": "stable",
  "license": "proprietary",
  "authors": [
    {
      "name": "***",
      "email": "email@example.com"
    }
  ],
  "require": {
    "barryvdh/laravel-ide-helper": "v2.7.0"
  }

问题出在“名称” 属性

- name : Does not match the regex pattern ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$

相应地更改“名称”属性"vendor-name/project-name"

例如:"name": "nismi/my-php-project"

轻松修复转到 composer.json 文件查找大写的位置,例如 Izupay/PayMent 到 izupay/payment 这将修复错误。

{
  "name": "IzuPay/PayMent",
  "description": "description",
  "minimum-stability": "stable",
  "license": "proprietary",
  "authors": [
    {
      "name": "***",
      "email": "email@example.com"
    }
  ],
  "require": {
    "barryvdh/laravel-ide-helper": "v2.7.0"
  }

有效答案是:

{
  "name": "izupay/payment",
  "description": "description",
  "minimum-stability": "stable",
  "license": "proprietary",
  "authors": [
    {
      "name": "***",
      "email": "email@example.com"
    }
  ],
  "require": {
    "barryvdh/laravel-ide-helper": "v2.7.0"
  }

这很可能与您使用的 Composer 版本有关。

在 Composer 2.0 版之前,名称可以包含任何字符,包括空格。

但是,从 2.0 版开始:

  • 名称可以由以 -, 分隔的单词组成。或 _.
  • 完整名称应匹配 ^a-z0-9/a-z0-9$.
  • 名称必须 小写(所以不是 vendor_name/PhpProjec,而是 vendor_name/phpprojec