如何将私有 github 存储库添加为 Composer 依赖项

2022-08-30 10:15:59

我在我的Laravel 5.1项目composer.json中有以下内容,以添加一个公共github存储库作为依赖项。

...    
"repositories": [
  {
    "type": "package",
    "package": {
      "name": "myVendorName/my_private_repo",
      "version": "1.2.3",
      "source": {
        "type" : "git",
        "url" : "git://github.com/myVendorName/my_private_repo.git",
        "reference" : "master"
      },
      "dist": {
        "url": "https://github.com/myVendorName/my_private_repo/archive/master.zip",
        "type": "zip"
      }
    }
  }
],
"require": {
     ....
    "myVendorName/my_private_repo": "*",
},
...

只要存储库是公共的,这就有效。现在,我已将此存储库设置为私有。我用于拉/推送到“my_private_repo”的git凭据是该项目的合作者之一。如何实现在运行作曲家更新或作曲家安装时从该专用存储库中提取作曲家


答案 1

使用GitHub和BitBucket的私有仓库:

断续器

{
    "require": {
        "vendor/my-private-repo": "dev-master"
    },
    "repositories": [
        {
            "type": "vcs",
            "url":  "git@bitbucket.org:vendor/my-private-repo.git"
        }
    ]
}

唯一的要求是为 git 客户端安装 SSH 密钥。

文档


答案 2

我希望我的答案不会来得太晚,因为我刚刚学会了这一点。

生成 ssh 键

您可以使用 ssh-keygen 命令生成 n+1 个 ssh 密钥。确保在服务器中执行此操作!

➜  ~ cd ~/.ssh
➜  .ssh ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): repo1
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in repo1.
Your public key has been saved in repo1.pub.
The key fingerprint is:
SHA256:EPc79FoaidfN0/PAsjSAZdomex2J1b/4zUR6Oj7IV2o user@laptop
The key's randomart image is:
+---[RSA 2048]----+
|      . . o ..   |
|       o B o ..  |
|      . + B o  . |
|       . * B = .o|
|        S B O B+o|
|         o B =.+*|
|          o....Bo|
|            o E.o|
|             +.o |
+----[SHA256]-----+

使用 ssh-keygen 命令后,系统将提示您输入文件名和密码。您需要为要用作作曲家依赖项的每个私有存储库提供一个密钥。在此示例中,repo1 是文件名。

确保将密码和确认留空。

配置 ssh 以选取正确的密钥

在服务器 ~/.ssh/config 文件中,您可以为每个 GitHub 存储库分配一个别名。否则,作曲家会尝试使用默认id_rsa。

Host repo1
HostName github.com
User git
IdentityFile ~/.ssh/repo1
IdentitiesOnly yes

Host repo2
HostName github.com
User git
IdentityFile ~/.ssh/repo2
IdentitiesOnly yes

配置作曲家

在项目 composer.json 文件中,您需要添加要作为依赖项的存储库:

"repositories": [
    {
        "type": "vcs",
        "url": "repo1:YourAccount/repo1.git"
    },
    {
        "type": "vcs",
        "url": "repo2:YourAccount/repo2.git"
    }
],

repo1 和 repo2 是您在 ~/ssh/config 文件中创建的别名。repo1 的完整 GitHub ssh url 将是:

git@github.com:YourAccount/repo1.git

现在你应该做好事。现在,您可以要求使用依赖项:

composer require youraccount/repo1 -n

composer require youraccount/repo2 -n

铌!使用 GitHub 存储库作为作曲家依赖项时,始终需要将 -n 添加到每个作曲家命令中。


推荐