composerを使用してシステムパッケージを代替バージョンに置き換えるのが便利な方法

コンポーザーを使用する大規模なプロジェクトでは、遅かれ早かれ1つの問題が発生します。 フレームワークまたは別のパッケージで、エラーを修正するか機能を追加します。開発者はプルリクエストを急いで受け入れません。 同時に、更新されたパッケージを一時的に使用し、プルリクエストがまだ受け入れられたら、公式バージョンに戻りたいと思います。 また、他のパッケージの依存関係でパッケージを指定できるため、状況は複雑です。



私自身もこの問題に遭遇しました: yii / yii2-elasticsearchにはスクロールAPIのサポートはありませんが、必要です。 同時に、対応するプルリクエストは2015年10月以降ハングしています。 当然のことながら、必要な機能が実装されているプロジェクトにパッケージのバージョンを一時的に接続する方が便利だと思いました。 同時に、遅かれ早かれこのプルリクエストが受け入れられ、元に戻す必要があることを理解しています。



更新:判明したように、すべてがすでに決定さおり、ドキュメントで詳細に説明されています



1. forkを目的のパッケージバージョンにします。 私の場合、13leaf / yii2-elasticsearchから分岐しました。 beowulfenator / yii2-elasticsearchパッケージが登場しました。 パッケージに新しいブランチ、たとえばbugfixを作成します。



2. composer.jsonプロジェクトで、パッケージのバージョンを変更します。 dev-をブランチの名前に追加します。



"yiisoft/yii2-elasticsearch":"dev-bugfix"
      
      





3.プロジェクトのcomposer.jsonでリポジトリへのリンクを指定します。

 "repositories": [ { "type": "vcs", "url": "https://github.com/beowulfenator/yii2-elasticsearch.git" } ]
      
      





その後、 composer update



を実行すれば十分であり、公式パッケージの代わりに独自のパッケージが使用されます。

パッケージインスタンスのcomposer.jsonファイルでは、名前フィールドに「yiisoft / yii2-elasticsearch」と表示されることが重要です。 指定されたリポジトリーは明示的にpackagistよりも優先されるため、composerは公式のパッケージの代わりにパッケージを配置します。

それでも開発者がプルリクエストを受け入れた場合、composer.jsonの変更をキャンセルするだけで十分です。



All Articles