最近、パッケージLaravelFacebookSdk
をインストールしました。
インストール
追加してcomposer.json
を更新します
"sammyk/laravel-facebook-sdk": "~3.0"
次に、composer update
を実行します
サービスプロバイダー
私の/config/app.php
で、LaravelFacebookSdkServiceProvider
をプロバイダー配列に追加します。
'providers' => [
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
];
すべてがうまくいきます。次に、それをリポジトリーにプッシュしました。
問題が発生しました!
2人目の開発者がgit pull
を実行し、composer update
を実行しました
エラーになります
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
未定義です。それは、プロバイダー配列の下の/config/app.php
で宣言したからです。
彼はコメントアウトの行に移動し、composer update
を最初に実行する必要があります。すべてが正常にインストールされたら、次に戻ってncommentその行をもう一度戻します。
他の開発者が毎回これを行う必要がありますか?新しいパッケージをインストールしましたか?
ここで何か不足していますか?
私が何か間違ったことをした場合は親切に教えてください。
ここでの問題は、php artisan clear-compiled
ファイルの更新プロセスの前に実行するように構成されているcomposer.json
コマンドがあることです。そして、artisan
はLaravelアプリの不可欠な部分なので、アプリのコードに問題があると文句を言うでしょう。まだではないクラスへの参照があるので、存在する場合、そのRuntimeException
を吐き出します。そのコマンドをpre-update-cmd
リストからpost-update-cmd
のcomposer.json
リストに移動することで修正できます。
これを変更してください:
"scripts": {
...
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
これに:
"scripts": {
...
"pre-update-cmd": [
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
]
},
参照されたLaravelFacebookSdkServiceProvider
クラスが存在する場合、更新プロセスの後にclear-compiled
コマンドが実行されるため、エラーは発生しなくなります。
composer update
を実行する代わりに、composer install
を実行します。 jsonファイルのコマンドを変更する必要はありません。
composer update
を実行すると、すべてのパッケージが処理され、composer.jsonに基づいて最新のマイナーバージョンに更新されてから、composer.lockが更新されます。これはあなたが望むものではありません。
composer install
を実行すると、追加したパッケージを含め、jsonファイルのすべてがインストールされていることを確認できます。これはあなたが探しているものです。