web-dev-qa-db-ja.com

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

ここに私の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->一致するパッケージが見つかりません。

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

助言がありますか ?

144
Neilime

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

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

バグ修正ブランチのバグを修正するためにmonologにパッチを適用したと仮定した例:

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

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

180
Seldaek

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"
},

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

41
Neilime

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

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

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

Composer documentation http://getcomposer.org/doc/05-repositories.md#vcs によると、元のリポジトリ(フォークではなく)を指定するだけで十分です。 require(あなたの場合は「nodge/lessphp」)。 Composerはあなたのforkをインストールします(ベンダーのコードを見てください)

7
Elvis Ciotti

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

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

1- Fork deリポジトリ

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

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

"repositories": [

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

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

composer require vendor/packagename:dev-branchname

そしてボイラ!!

フォークバージョンが機能している

4
Luis Mata B.

したがって、これは2019年であり、ここでの答えのほとんどはすでに正しいです。

ただし、自分で見つけた場合、(作成した)フォークの特定のブランチを必要とする状況では、composerに使用可能なバージョン/タグを最初にリストしてください。これにより、時間を大幅に節約できました。

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

最初に、repositoriesキーをcomposer.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
Sam

通常、パッケージ定義に「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": "*"
    }
}
2
user3497737