返回

一文搞定:Composer.json 中同时定义 HTTP 和 SSH VCS 定义

php

使用 Composer.json 定义 HTTP 和 SSH VCS 定义

介绍

在 Composer 的包管理器中,灵活地访问代码源至关重要。通过同时定义 HTTP 和 SSH VCS 定义,你可以为同一个包提供多种访问途径。本文将指导你逐步了解在 Composer.json 中实现这一目标的方法。

HTTP 和 SSH VCS 定义

  • HTTP VCS 定义: 使用非安全 SSL 连接,通常用于公开仓库。
  • SSH VCS 定义: 使用 SSH 密钥进行安全连接,通常用于私有仓库。

在 Composer.json 中定义 VCS 定义

要同时定义 HTTP 和 SSH VCS 定义,请在 composer.json 文件的 "repositories" 部分中添加以下代码块:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/vendor/secret.git",
            "insecure-ssl": true
        },
        {
            "type": "vcs",
            "url": "ssh://git@github.com/vendor/secret.git"
        }
    ]
}
  • 确保你的 SSH 密钥已配置好,并具有访问私有仓库的权限。
  • 如果使用 HTTP 连接,请在 "insecure-ssl" 选项中指定 "true",以绕过 SSL 验证。

连接优先级

Composer 将优先尝试使用 SSH 连接。如果 SSH 连接失败,Composer 将尝试使用 HTTP 连接。

示例

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/vendor/secret.git",
            "insecure-ssl": true
        },
        {
            "type": "vcs",
            "url": "ssh://git@github.com/vendor/secret.git"
        }
    ],
    "require": {
        "vendor/package": "1.0.0"
    }
}

当安装此包时,Composer 将首先尝试使用 SSH 连接到 "ssh://git@github.com/vendor/secret.git" 存储库。如果 SSH 连接失败,Composer 将使用 "https://github.com/vendor/secret.git" 存储库的 HTTP 连接。

结论

同时定义 HTTP 和 SSH VCS 定义可以为你的 Composer 项目提供灵活性和冗余性。通过遵循本文中的步骤,你可以轻松实现此功能。

常见问题解答

  • Q:我如何配置 SSH 密钥?

    • A: 请参阅 SSH 官方文档以获取具体说明。
  • Q:为什么 Composer 无法连接到 SSH 存储库?

    • A: 检查你的 SSH 密钥是否正确配置,并且你具有访问私有仓库的权限。
  • Q:我可以使用 Composer 定义多个 SSH VCS 定义吗?

    • A: 是的,你可以通过添加多个 "vcs" 存储库定义来实现此目的。
  • Q:Composer 如何选择使用哪个 VCS 定义?

    • A: Composer 将优先尝试使用 SSH 连接。如果 SSH 连接失败,Composer 将使用 HTTP 连接。
  • Q:如何禁用非安全 SSL 连接?

    • A: 将 "insecure-ssl" 选项设置为 "false",或从 "repositories" 部分中删除 HTTP VCS 定义。