更改程序包的Composer git源

Svi*_*ish 17 php github composer-php git-fork

我用这个composer.json使用Composer拉入一个包:

{
    "require": {
        "torophp/torophp": "dev-master",
    },
}
Run Code Online (Sandbox Code Playgroud)

当我运行composer install它似乎直接从GitHub拉这个包.

我在github上创建了一个repo的fork,但有一些小的改动.有没有办法让作曲家在GitHub而不是原版上拉我的版本?

eye*_*hUp 42

如果这是你的 composer.json

"require": {
  "torophp/torophp": "dev-master"
}
Run Code Online (Sandbox Code Playgroud)

并且您想要更改它并使用您的fork,只需将您的存储库添加到composer.json如下:

"repositories": [
   {
     "type": "vcs",
     "url": "https://github.com/your-github-username/torophp"
   }
]
Run Code Online (Sandbox Code Playgroud)

重要提示:请勿更换"require"部件,必须继续使用torophp/torophp!

添加"repositories"部件后,运行一个composer update(或composer.phar update),然后编写器将下载您的分支(即使它在操作期间回应"安装torophp/torophp").


更新( 2014年9月18日):正如@efesaid在评论中提到的:

如果您的包在packagist上发布,则需要添加 --prefer-source选项以强制从VCS进行安装.


注意:对于那些从HTTP(S)源提取问题的人(即[RuntimeException] Failed to clone https://github.com/your-github-username/torophp, could not read packages from it在尝试更新时获得),您可以composer.json改为使用git协议.为此,请更改composer.json如下并composer update再次运行.

"repositories": [
   {
     "type": "git",
     "url": "git://github.com/your-github-username/torophp.git"
   }
]
Run Code Online (Sandbox Code Playgroud)

现在进入vendor/torophp/torophp并运行git remote -v以检查您是否使用了存储库所需的源.

从那里你可以将更改提交到fork并从origin(git pull origin master)更新它.


更新:要在GitHub上使用私有存储库,您必须使用git协议,并且还必须为git客户端安装SSH密钥.

Composer参考:从VCS存储库加载包

  • 如果您的包在packagist上发布,则需要添加`--prefer-source`选项以强制从VCS安装. (2认同)