5

我正在安装spatie\laravel-backup软件包。根据说明,我只需要composer require spatie\laravel-backup识别并自动安装包即可。看起来正在发生这种情况:

Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: spatie/laravel-backup

但是在提供程序中/config/app.php没有提到backup任何地方,并且没有找到预期的/config/backup.php配置文件。

我需要发出任何其他命令来完成自动发现吗?

4

2 回答 2

9

但是在 /config/app.php 中没有提到提供程序中的任何地方的备份,并且没有找到预期的 /config/backup.php 配置文件。

Laravel 5.5 在发现包时不会修改你的配置文件。我们只需要在手动注册包的服务时将服务提供者条目和外观别名添加到config/app.php即可。

包发现通过读取vendor/composer/installed.json来查找可自动加载的包。然后它保存一个缓存的清单文件,应用程序在启动时读取该文件以加载包提供程序和别名(通常在bootstrap/cache/packages.php中)。

我们可以通过运行重新加载这个缓存的包清单文件:

php artisan package:discover

包发现不会发布包的资产,例如您描述的配置文件。开发人员必须显式运行vendor:publish命令:

php artisan vendor:publish --provider='Spatie\Backup\BackupServiceProvider'

此限制是设计使然。Laravel 无法知道开发者是否想发布一个包的组件,因为在很多情况下,包提供了可选的组件,开发者可以选择发布哪些组件。

于 2017-10-22T18:26:58.933 回答
1

运行php artisan vendor:publish以发布配置文件。

于 2017-10-22T18:31:31.050 回答