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の変更をキャンセルするだけで十分です。

Source: https://habr.com/ru/post/J274651/


All Articles