最近,我安装了一个包LaravelFacebookSdk
.
安装
我composer.json
通过添加更新我的
"sammyk/laravel-facebook-sdk": "~3.0"
然后,我跑了 composer update
服务提供者
在我/config/app.php
,我添加LaravelFacebookSdkServiceProvider
到providers数组.
'providers' => [ SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class, ];
一切都很好.然后,我将它推送到我的存储库.
问题来了!
第二个开发人员进来git pull
并运行composer update
他会得到一个错误
SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,
是不确定的.因为,我/config/app.php
在我的提供者数组下声明了.
他必须去评论那条线,并运行composer update
第一条线.成功安装完所有内容后,再次返回并取消注释该行.
其他开发人员每次都要这样做,我们安装了新包吗?
我在这里错过了什么吗?
如果我做错了,请告知.
这里的问题是有一个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" ] },
现在clear-compiled
命令将在更新过程之后运行,当引用的LaravelFacebookSdkServiceProvider
类存在时,不再有错误.
而不是运行composer update
运行composer install
.无需更改json文件中的命令.
当您运行composer update
它时,将遍历所有包并根据您的composer.json更新到最新的次要版本,然后更新composer.lock.这不是你想要的.
当您运行composer install
它时,将确保安装了json文件中的所有内容,包括刚添加的包.这就是你要找的东西.