美文网首页
为 Laravel 包创建安装程序命令

为 Laravel 包创建安装程序命令

作者: 追梦人在路上不断追寻 | 来源:发表于2022-10-06 22:38 被阅读0次

在 Laravel 生态系统中使用包的乐趣之一是它们的安装非常容易。可以使用 Composer 拉入包,Laravel 会自动发现它们。

在这篇文章中,您将学习如何轻松添加install命令,使包用户更容易开始使用包。

常用包命令

php artisan vendor:publish --tag=awesome-package-config

php artisan vendor:publish --tag=awesome-package-migrations

php artisan vendor:publish --tag=awesome-package-assets

有些包会做得更好一点。例如,Laravel Horizon 有一个漂亮的安装命令,它将:

  • 发布配置文件
  • 在您的应用程序中创建 Horizon 服务提供商
  • 在您的 config/app.php 中注册该服务提供商

快速创建包命令

class BackupServiceProvider extends ServiceProvider
{
   public function boot()
     {
         $this->publishes([
             __DIR__.'/../config/backup.php' => config_path('backup.php'),
         ], 'config');

         $this->publishes([
             __DIR__.'/../resources/lang' => "{$this->app['path.lang']}/vendor/backup",
         ]);

         $this->loadTranslationsFrom(__DIR__.'/../resources/lang/', 'backup');
     }

     public function register()
     {
         $this->mergeConfigFrom(__DIR__.'/../config/backup.php', 'backup');
         
         $this->app->bind('command.backup:run', BackupCommand::class);
         $this->app->bind('command.backup:clean', CleanupCommand::class);
         $this->app->bind('command.backup:list', ListCommand::class);
         $this->app->bind('command.backup:monitor', MonitorCommand::class);
         
             $this->commands([
             'command.backup:run',
             'command.backup:clean',
             'command.backup:list',
             'command.backup:monitor',
         ]);
}

在最新版本的 laravel-package-tools 中,我们添加了新功能来为你的包添加安装程序。这就是你可以做到的方式。

class YourServiceProvider extends PackageServiceProvider
 {
     public function configurePackage(Package $package): void
     {
         $package
             ->name('your-package')
             ->hasConfigFile()
             ->hasTranslations()
             ->hasCommands([
                 BackupCommand::class,
                 CleanupCommand::class,
                 ListCommand::class,
                 MonitorCommand::class,
             ])
             ->hasInstallCommand(function(InstallCommand $command) {
                $command
                    ->publishConfigFile()
                    ->publishMigrations()
                    ->askToRunMigrations()
                    ->copyAndRegisterServiceProviderInApp()
                    ->askToStarRepoOnGitHub();
            });
     }
 }

使用此代码,您的软件包将获得一个安装命令,该命令将:

  • 复制配置文件
  • 发布你的包的迁移
  • 要求运行迁移
  • 将服务提供者存根复制到安装包的应用程序中。该服务提供者也将在config/app.php应用程序中注册
  • 询问是否应在 GitHub 上为 repo 加星标
  • 使用hasInstallCommand比手动编写安装命令要快得多。

相关文章

网友评论

      本文标题:为 Laravel 包创建安装程序命令

      本文链接:https://www.haomeiwen.com/subject/ujdnnrtx.html