web-dev-qa-db-fra.com

Comment installer correctement le package dans Laravel?

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.

18
cyber8200

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.

10
Bogdan

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.

7
jfadich