6

私は自分のフォークを使用したいLaravelプロジェクトを持っています(それはいくつかのプルリクエストをマージしました)。次の composer.json は期待どおりに機能します (リポジトリから master ブランチを取得します)。

{
    "repositories": [
        {
            "type": "vcs",
            "url": "http://github.com/rmasters/framework"
        }
    ],
    "require": {
        "php": "5.4.*",
        "laravel/framework": "dev-master"
    },
    ...
    "minimum-stability": "dev"
}

ただし、Laravel が提供する Illuminate コンポーネントに依存するパッケージを追加すると (たとえば、zizaco/entrustフォークが提供するものと同じバージョンが必要)、次のような結果になります。

  • gexge/laravel-framework のインストール (4.0.x-dev 87556b2)
  • .../Composer/cache/files/gexge/framework/87556b.....c382.zip をキャッシュから読み取る
  • キャッシュからの読み込み
  • アーカイブを抽出しています

  • 理由: zizaco/entrust dev-master には、illuminate/support 4.0.x が必要です -> で満足できます

    • laravel/framework [v4.0.5、v4.0.4、v4.0.3、v4.0.2、v4.0.1、v4.0.0-BETA4、v4.0.0-BETA3、v4.0.0-BETA2、v4.0.0、4.0.x-開発]、
    • gexge/framework [4.0.x-dev、v4.0.0、v4.0.0-BETA2、v4.0.0-BETA3、v4.0.0-BETA4、v4.0.1、v4.0.2、v4.0.3、v4.0.4、v4. 0.5]、
    • エビワゴン/laravel-framework [4.0.x-dev, v4.0.0, v4.0.0-BETA2, v4.0.0-BE TA3, v4.0.0-BETA4, v4.0.5],
    • 照明/サポート[4.0.x-dev、v4.0.0、v4.0.0-BETA2、v4.0.0-BETA3、v4.0.0-BETA4、v4.0.1、v4.0.2、v4.0.3、v4.0.4、v4. 0.5]。

実際には、私のフォークとこのフォークの両方がインストールされ、gexge フォークがオートローダーで優先されます。

別のフォークを見つけようとするのではなく、依存関係にフォークをピックアップさせる方法はありますか? 私のフォークには同じパッケージ名があります (composer.json は変更されていません)。

または、特定のパッケージが選択されないようにブロックできますか? (これに関するドキュメントは見つかりませんでした。) 厄介なことに、そもそもどちらのフォークも Packagist を使用する理由があまりないように見えますが、Composer はこれを回避できるはずです。

4

1 に答える 1

10

fork の master の branch-alias が に設定されているため、要件を満たし4.1.x-devていません。4.0.*

解決策は、このように要求することにより、パッケージにエイリアスを設定することです

{
    "repositories": [
        {
            "type": "vcs",
            "url": "http://github.com/rmasters/framework"
        }
    ],
    "require": {
        "php": "5.4.*",
        "laravel/framework": "dev-master as 4.0.0"
    },
    ...
    "minimum-stability": "dev"
}

実際、それらのフォークは Packagist にあるべきではありません。所有者に連絡します。

于 2013-07-31T13:04:07.603 に答える