
API プロジェクトでは、composer.json を次のように設定します。
{
"require-dev": {
"phpunit/phpunit": "4.7.*"
},
"require": {
"monolog/monolog": "1.5.*"
}
}
そして、最初はcomposer install
すべてうまくいきました。 で呼び出すと、Phpunit は動作しましたvendor/bin/phpunit
。私の作業マシンは Windows 7 OS ですが、このプロジェクトでは git を使用しており、別のマシン (Kubuntu 14.04) からこれに取り組んでいる場合、 を実行した後git pull
、 でユニット テストを実行できなくなりvendor/bin/phpunit
、vendor/bin/phpunit が見つからないというエラーで失敗します。
Linux マシンでは、機能しない実行可能ファイル vendor/bin/phpunit を削除し、vendor/phpunit フォルダーを削除して、composer で を介して置き換えましたcomposer update
。その時点で、以前と同じようにユニット テストを実行できるようになりました。ただし、これは Windows 7 ではシームレスに動作しません。これはより複雑です。
私の質問は、github でファイルを追跡してからさまざまなオペレーティング システムで作業することで、何か間違ったことをしているのでしょうか?ディレクトリcomposer.json
の内容を追跡せずに追跡するだけでvendor/phpunit/phpunit
(ファイルを特定の OS に残しておくと)、このエラーを回避できますか? ありがとうございます、Adam。
答え1
Composer の目的は、vendor
リポジトリに空のディレクトリ (!) を用意し、composer.json
(要件) とcomposer.lock
(最後にテストした特定のバージョン) を追跡して、composer install
チェックアウト後に新しい開発マシンで実行することです。
(注: はファイルcomposer install
に従って特定のバージョンをインストールしますcomposer.lock
。composer update
は、で定義された要件に一致する最新バージョンをインストールしますcomposer.json
。)
その後、Composer はシステムに適したバイナリをダウンロードし、それをディレクトリに配置しますvendor/bin/
。