2016-06-15 3 views
0

自分のプロジェクトでComposerオートローダーを使用しています。Composerオートローダーは、require-devから存在しないクラスを持つことができますか?

私はまた、PHPUnitのを使用しています、そしてので、私のcomposer.jsonこのあります

"require-dev": { "phpunit/phpunit": ">=3.5" },

をこれは私の作曲オートローダファイルはPHPUnitのクラスをサポートしていることを意味します。私がテストをしたい時にはこれは素晴らしいことです。

私はこれまですべてのPHPUnitファイルの言及たオートローダファイルのバージョンをコミットから避けてきました。しかし、これは、オートローダ・ファイルの2つのバージョンを切り替える必要があるため、開発には苦労しています。

はそれだけで、それらをコミットしても大丈夫ですか?

答えて

0

これまで、すべてのPHPUnitファイルについて言及しているオートローダ ファイルのバージョンをコミットするのを避けました。私はオートローダファイルの 2の間のバージョンを切り替えること保つようしかし、これは 、開発にかなりの痛みを証明しています。

はそれだけで、それらをコミットしても大丈夫ですか?

これを正しく理解していれば、パーツ(vendor/composer)または完全なベンダーフォルダをリポジトリにコミットしたいのですか?

は、Composerを使用して依存関係の更新を実行するとき(自動ロードの再生成を含む)ベンダーのフォルダに上書きされるため、また引き抜くときにマージの競合が発生する可能性があるため、開発チームの全員にとって複雑になります。

私の提案は次のとおりです。これをしません!ベンダフォルダなしでリポジトリを保存してください!

composer.lockをコミットし、開発者がベンダーのフォルダ と、彼はどうしたらまず最初にすることなく、リポジトリ、その船をフェッチするときcomposer install

を使用するには、composer installを実行することで、依存関係を取得することです。

チームのすべての開発者が同じバージョンの依存関係をフェッチするように、composer.lockファイルをコミットする必要があります。情報は、ロックファイルに既にあるので、それは、依存関係の解決およびバージョンの検索をスキップすることができますので、 Composerはまた、より高速なビットを実行します。


更新

私はあなたの質問に対処するためにrequirerequire-devにfocuesたが、私は2つのセクションでは、自動ロードautoloadにもありますがautoload-devを持っていることを言及するのを忘れてしまいました。

"autoload" : { 
    "psr-4": { 
     "Application\\": "src/" 
    } 
}, 
"autoload-dev": { 
    "psr-4": { 
     "Application\\Tests\\": "tests/" 
    } 
}, 

参照:あなたは本番に展開するプロセスにあるときcomposer install --no-devはどんなrequire-devパッケージを省略する実行https://getcomposer.org/doc/04-schema.md#autoload-dev

+0

私は自分のプロジェクトをComposerなしのコンテキストで使用できるようにしたいので、オートローダーをコミットしたいと思います。唯一の依存関係はrequire-devにあるPHPUnitです。 – joachim

+0

さて、新しいリリースにタグを付け、 'composer install --no-dev'を使ってプロダクションの依存関係を取り出し、それをパッケージ化し(ベンダの依存関係を含む)、リリースしてからあなたのコンテキストに展開することができます。 |あなたの質問への短い答えは、 "ただコミットするのは大丈夫ですか?"それは開発を複雑にしますが、うまくいくでしょう。 –

+0

私がそれらをコミットしたい理由は、実際には、少なくとも私にとっては、開発をより簡単にすることです!現時点では、私は生産用オートローダを持つgitブランチと開発用オートローダを持つブランチに切り替える必要があります。 – joachim

0

。したがって、PHPUnitコードはそこにはありません。

+0

確かに。しかし、私の主張は、自動ロードファイルの2つのバージョンが存在するということです。PHPUnitを使用する場合と使用しない場合があります。私の質問です:そこにないPHPUnitファイルへの参照を含む自動ロードファイルをコミットするのは安全ですか? – joachim

+0

とにかく作成されるファイルをなぜコミットしますか?あなたが持っているパッケージにすべてのコードをコミットすることも提案すれば、それは意味をなさないでしょう。特定の展開シナリオではそれは意味をなさないかもしれませんが、バージョン管理の冗長性のために通常のケースではありません。 – Sven

関連する問題