Récemment, j'ai installé le paquet a LaravelFacebookSdk
.
Installer
Je mets à jour mon composer.json
en ajoutant
"sammyk/laravel-facebook-sdk": "~3.0"
Ensuite, je lance composer update
Fournisseur de services
Dans mon /config/app.php
, J'ajoute le LaravelFacebookSdkServiceProvider
au tableau des fournisseurs.
'providers' => [
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
];
Tout fonctionne très bien. Ensuite, je l'ai poussé vers mon référentiel.
Voici le problème!
Le deuxième développeur à venir a fait un git pull
et courir composer update
Il obtiendra une erreur
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
est indéfini. parce que j'ai déclaré que dans mon /config/app.php
sous mon tableau de fournisseurs.
Il doit aller commenter cette ligne, et exécuter le composer update
première. Après que tout a été installé avec succès, revenez et décommentez cette ligne à nouveau.
Est-ce qu'un autre développeur devra le faire à chaque fois que nous installerons un nouveau package?
Est-ce que j'ai râté quelque chose ?
S'il vous plaît veuillez me dire si j'ai fait quelque chose de mal.
Le problème ici est qu'il existe une commande php artisan clear-compiled
En cours d'exécution avant le processus de mise à jour dans votre fichier composer.json
. Et puisque artisan
fait partie intégrante de l'application Laravel, il se plaindra quand quelque chose ne va pas avec le code de l'application. Puisque vous avez une référence à une classe qui n'est pas encore présent, il crachera que RuntimeException
. Vous pouvez résoudre ce problème en déplaçant cette commande de la liste pre-update-cmd
vers la liste post-update-cmd
dans votre composer.json
.
Alors changez ceci:
"scripts": {
...
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
]
},
Pour ça:
"scripts": {
...
"pre-update-cmd": [
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
]
},
Maintenant, la commande clear-compiled
Sera exécutée après le processus de mise à jour, lorsque la classe LaravelFacebookSdkServiceProvider
référencée est présente, donc plus d'erreurs.
Au lieu d'exécuter composer update
courir composer install
. Il n'est pas nécessaire de modifier les commandes de votre fichier json.
Lorsque vous exécutez composer update
il va parcourir tous vos packages et mettre à jour vers la version mineure la plus récente basée sur votre composer.json puis mettre à jour le composer.lock. Ce n'est pas ce que tu veux.
Lorsque vous exécutez composer install
il s'assurera que tout dans votre fichier json est installé, y compris les packages que vous venez d'ajouter. C'est ce que vous recherchez.