Composerでフォークを要求する方法


172

これが私のcomposer.jsonです、GithubでNodgeのlessphpプロジェクトのフォークを使用したいと思います

 "repositories": [{
    "type": "package",
    "package": {
        "version": "dev-master",
        "name": "nodge/lessphp",
        "source": {
            "url": "https://github.com/Nodge/lessphp.git",
            "type": "git",
            "reference": "master"
        },
        "autoload": {
            "classmap": ["lessc.inc.php"]
        }
    }
}],
"require": {
    "php": ">=5.3.3",
    "nodge/lessphp": "dev-master"
},

しかし、更新を行うとこのエラーが発生します:

nodge / lessphp dev-master->一致するパッケージが見つかりません。

このフォークを正しく要求する方法がわかりません...

助言がありますか ?

回答:


228

それを行う最も一般的な(そしてより簡単な)方法は、VCSリポジトリを使用することです。

フォークをリポジトリとして追加し、バージョンの制約を更新してカスタムブランチを指すようにするだけです。カスタムブランチ名の前にを付ける必要ありますdev-

バグ修正ブランチのバグを修正するためにモノログにパッチを適用した場合の例:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/igorw/monolog"
        }
    ],
    "require": {
        "monolog/monolog": "dev-bugfix"
    }
}

バグ修正ブランチを指定する場合を除いて、requireステートメントを変更しないことに注意してください。個人のフォーク()monolog/monologではなく、引き続きアップストリームパッケージ()を参照しますigorw/monolog。あなたはドキュメントで詳細読むことができます


6
これは、のために動作していないようgithub.com/Polycademy/purlのフォークですgithub.com/jwage/purl私がしようとしてきた:「リポジトリ」:[{「タイプ」:「VCS」、「URL ":" git@github.com:Polycademy / purl.git "}]、および" require ":{" jwade / purl ":" dev-master "、}、しかし、取得し続けます:問題1-要求されたパッケージjwade / purlはどのバージョンでも見つかりませんでした。パッケージ名にタイプミスがある可能性があります。
CMCDragonkai 2013年

11
@CMCDragonkaiを実行するcomposer show jwade/purl -vと、開発マスターバージョンが無視された理由がわかるはずです。
セルデク2013年

4
@seldaek、あなたは私を救った!ありがとうございました!(私のフォークはdev-dev- ..と呼ばれていました)ネーミングが自動的に行われることを知りませんでした。
ミゲルスティーブンス

15
「ドキュメントを読む」は悪い答えです。より良い答えは、具体例を示すことです
oskarth

7
個人のフォークを参照しないことについて警告するのはいいことです。これは私の日を救いました、+ 1
エドリアン

42

VCSの使用は機能します:

"name": "test/test",
"repositories": [{
    "type": "vcs",
    "url": "http://github.com/Nodge/lessphp"
}],
"require": {
    "leafo/lessphp": "dev-master"
},

しかし、これを備えたモジュールが必要な場合composer.json、機能しません。フォークではなく、元のプロジェクトをインストールします。

"name": "example/example",
"require": {
    "test/test": "dev-master"
},

リポジトリについて再度言及する必要があります。それは正常ですか?


同じここで同じ問題
Aysennoussi 2014年

「rm -rf」を使用してモジュールを手動で削除し、次に「composer update」を使用します。それでうまくいきました。
Hubert Perron、2014

3
私は数十のフォークを使用しましたが、これは機能しませんでした。これが実用的なソリューションです:stackoverflow.com/a/27970559/183904
Julien

4
@Julien、私はこの方法を使用したばかりで、それは魅力のように機能しました... ドキュメントは非常に明確です。問題のパッケージが必要な場合は、カスタムブランチ名にdev-プレフィックスを付けることを忘れないでください。
mTorres、2015年

2
私のために働いた...しかし、私はURLにhttps://を使用する必要があることを述べたいです。
plong0 2015

33

@Neilimeの回答がうまくいかない場合は、フォークが別のブランチを使用していることを確認してください。

たとえばmy-bugfix、と呼ばれるフォークのブランチに変更をプッシュしますdev-。ブランチ名にプレフィックスを追加せずに、composer.jsonに追加する必要があります。コンポーザーファイルは次のようになります。

"repositories":
[
    {
        "type": "vcs",
        "url": "http://github.com/yourname/packageName"
    }
],
"require": {
    "owner/packageName": "dev-my-bugfix"
},

1
これは独創的で明確な説明です。ありがとうございました !
ドミニク2017

1
しかし、それが他の誰かフォークである場合はどうなりますか?例を参照してくださいここに
abbood

また、nameフォークしたリポジトリのcomposer.jsonファイルのフィールドは、元の所有者と同じままである必要があります。
NecipAllef 2018年

11

私は多くのオプションを試しましたが、この投稿を受け取った後、私は光を見て、それはちょうど完璧に機能しました。

これはあなたがしなければならないことです:

1-フォークリポジトリ

2-ブランチを作成し、必要な変更を加えます。

3-リポジトリラベルをcomposer.jsonに追加します

"repositories": [

        {
            "type": "vcs",
            "url": "https://github.com/user/yourforkname"
        }
    ]

4-プロジェクト内のコマンドラインでは、次のようなフォークが必要です。

composer require vendor/packagename:dev-branchname

そしてボイラー!!

あなたはあなたのフォークバージョンを動かしています



5

つまり、これは2019年であり、ここでの答えのほとんどはすでに正しいです。

ただし、(作成した)フォークの特定のブランチを必要とする必要がある場合は、最初に使用可能なバージョン/タグをコンポーザーにリストしてもらいます。これにより多くの時間を節約できました。

spatie/laravel-backupパッケージの完全な例。

まず、repositoriescomposer.json にキーを追加します。あなたのフォークのURLで

"repositories": [{
   "type": "vcs",
   "url": "https://github.com/holymp2006/laravel-backup"
 }]

利用可能なバージョン/タグを取得する

composer show "spatie/laravel-backup" --all

versions端末の出力で目的のバージョンを選択し、そのバージョンを要求する

composer require spatie/laravel-backup:v5.x-dev

2

通常、「dist」ノードをパッケージ定義に追加します。この方法で問題なく使用できました。

しかし、これ以上の説明のために、このトリックをどこから手に入れたのか思い出せません。

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "version": "dev-master",
                "name": "nodge/lessphp",
                "source": {
                    "url": "https://github.com/Nodge/lessphp.git",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "classmap": ["lessc.inc.php"]
                },
                "dist": {
                    "url": "https://github.com/Nodge/lessphp/archive/master.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require": {
        "nodge/lessphp": "*"
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.