在 Composer 处为存储库设置名称

gmp*_*nos 3 php terminal json repository composer-php

我在服务器上有我的私人存储库。在我的作曲家文件中,我有以下 JSON:

"repositories": [
    {
     "type": "composer",
     "url": "myrepositoryurl"
    }
]
Run Code Online (Sandbox Code Playgroud)

一切都很好。如果我运行以下命令。

composer config repositories vcs myrepositoryurl
Run Code Online (Sandbox Code Playgroud)

我收到作曲家的错误:

[InvalidArgumentException]                                               
Setting repositories does not exist or is not supported by this command
Run Code Online (Sandbox Code Playgroud)

如果我将命令更改为

composer config repositories.name vcs myrepositoryurl
Run Code Online (Sandbox Code Playgroud)

一切正常,我在composer.json 文件中得到了以下更新:

"repositories": {
  "name": {
    "type": "composer",
    "url": "myrepositoryurl"
  }
}
Run Code Online (Sandbox Code Playgroud)

这两者之间有什么实际区别吗?如果我不想为我的存储库 URL 设置名称怎么办?我可以从命令行执行此操作吗?

Jen*_*och 6

这两者之间有什么实际区别吗?

不会。两个 JSON 元素都转换为 PHP 中的数组,因此它们是等效的,一个具有数字键,另一个具有命名键。因此,“repositories.key”的存在是为了通过 CLI 中的密钥引用存储库。

在存储库上实际上并不需要它,因为您可以使用逗号分隔添加多个条目。设置“名称”仅与包相关(当它们发布时)。

仅当您想从 CLI 添加多个存储库(按密钥名称)时才需要它。

这是没有记录的,但人们时不时会遇到这个问题。参考: https: //github.com/composer/composer/issues/2802

如果我不想为我的存储库 URL 设置名称怎么办?

手动编辑composer.json文件。

我可以从命令行执行此操作吗?

不。从 CLI 中可以是

  • config key value或者
  • config key value1 ... valueN(值数组)
  • 然后就是config repositories.key value

composer config repositories vcs myrepositoryurl不支持该语法,请参阅https://getcomposer.org/doc/03-cli.md#modifying-repositories


请注意该命令:composer config repositories.name vcs myrepositoryurl

有类型vcs,不像composer你的帖子中的那样。

{
    "repositories": {
        "name": {
            "type": "vcs",
            "url": "myrepositoryurl"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)