[Laravel 6] Artisan command list customize
Laravel(ラベルはArtisan)には便利なCLIツールがあります.
本番環境に開発および導入する場合、すべてのコマンドは必要ありません.そのため、本番環境で必要なコマンドのみを保存および削除したいと思います.
そこで、Artisanのcommand listを必要なコマンドから削除する方法、または操作に必要なコマンドだけを保持する方法について理解しました.
Artisanのデフォルトコマンドの登録セクションには、次のものがあります.
ConsoleSupportServiceProvider.phpの内容から見ると
このうち
まず、
$providersを空にします.
ただし、開発環境では、これらのコマンドはすべて必要であり、本番環境から削除したいだけなので、providerを再変更する必要があります.
この方法を変更して、
次に、必要なデフォルトコマンドを追加します.
デフォルトコマンドはArisanServiceProvider$上書きするプロバイダを作成して、コマンドに必要なコマンドのみを使用します.
テストとしていくつか追加しました.
終了時...
実際、どれだけの人がArtisanコマンドを削除したいのか分かりませんが、それが可能かどうかを確認し、それが可能かどうかを知っています.
もしこれから関連する仕事があれば、私はこの文章を読んで参考にします.
ソース:https://github.com/wlgns5376/laravel6-artisan-customize
本番環境に開発および導入する場合、すべてのコマンドは必要ありません.そのため、本番環境で必要なコマンドのみを保存および削除したいと思います.
そこで、Artisanのcommand listを必要なコマンドから削除する方法、または操作に必要なコマンドだけを保持する方法について理解しました.
Artisanのデフォルトコマンドの登録セクションには、次のものがあります.
config/app.php
のIlluminate\Foundation\Providers\ConsoleSupportServiceProvider::class
ですConsoleSupportServiceProvider.phpの内容から見ると
$providers
には、他のサービスプロバイダもあります.このうち
ArisanServiceProvider
は、デフォルトコマンドを登録するproviderです.MigrationServiceProvider
はmigrateコマンドの登録プロバイダです.まず、
ConsoleSupportServiceProvider
を上書きするproviderを作成し、すべてのArtisanコマンドを除外します.$ php artisan make:provider MyConsoleSupportServiceProvider
Provider created successfully.
生成されたproviderを開き、ServiceProvider
ではなくConsoleSupportServiceProvider
に入れ、レジスタとbootコードを削除します.$providersを空にします.
<?php
namespace App\Providers;
use Illuminate\Foundation\Providers\ConsoleSupportServiceProvider;
class MyConsoleSupportServiceProvider extends ConsoleSupportServiceProvider
{
protected $providers = [];
}
次いで、MyConsoleSupportServiceProvider
を消去し、config/app.php
のプロバイダに追加する.'providers' => [
...
//Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
App\Providers\MyConsoleSupportServiceProvider::class,
...
]
Artisanを実行します.$ php artisan list
次のセクションを除き、ほとんどのコマンドが失われています.ただし、開発環境では、これらのコマンドはすべて必要であり、本番環境から削除したいだけなので、providerを再変更する必要があります.
ConsoleSupportServiceProvider
で$providerにプロバイダを登録する部分はAggregateServiceProviderのレジスタメソッドである.この方法を変更して、
ConsoleSupportServiceProvider
からコマンドを削除します.production
<?php
namespace App\Providers;
use Illuminate\Foundation\Providers\ConsoleSupportServiceProvider;
class MyConsoleSupportServiceProvider extends ConsoleSupportServiceProvider
{
public function register()
{
if ($this->app->environment() == 'production') {
$this->providers = [];
}
parent::register();
}
}
次に、MyConsoleSupportServiceProvider.php
キャッシュファイルを削除します.bootstrap/cache/service.php
コマンドを実行して、コマンドが追加されたことを確認します.php artisan list
ファイルから.env
に変更し、コマンドを再実行すると、コマンドが失われる可能性があります.次に、必要なデフォルトコマンドを追加します.
デフォルトコマンドはArisanServiceProvider$上書きするプロバイダを作成して、コマンドに必要なコマンドのみを使用します.
$ php artisan make:provider MyArtisanCommandServiceProvider
Provider created successfully.
生成されたAPP_ENV=production
では、ArisanServiceProviderを拡張し、$コマンドに必要なコンテンツのみを追加します.テストとしていくつか追加しました.
MyArtisanCommandServiceProvider
<?php
namespace App\Providers;
use Illuminate\Foundation\Providers\ArtisanServiceProvider;
class MyArtisanCommandServiceProvider extends ArtisanServiceProvider
{
/**
* The commands to be registered.
*
* @var array
*/
protected $commands = [
'CacheClear' => 'command.cache.clear',
'ConfigCache' => 'command.config.cache',
'ConfigClear' => 'command.config.clear',
'Down' => 'command.down',
'Up' => 'command.up',
];
/**
* The commands to be registered.
*
* @var array
*/
protected $devCommands = [];
}
その後、MyConsoleSupportServiceProviderのプロバイダに他のプロバイダとともに追加します.MyArtisanCommandServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Database\MigrationServiceProvider;
use Illuminate\Foundation\Providers\ComposerServiceProvider;
use Illuminate\Foundation\Providers\ConsoleSupportServiceProvider;
class MyConsoleSupportServiceProvider extends ConsoleSupportServiceProvider
{
public function register()
{
if ($this->app->environment() == 'production') {
$this->providers = [
MyArtisanCommandServiceProvider::class,
MigrationServiceProvider::class,
ComposerServiceProvider::class,
];
}
parent::register();
}
}
最後にコマンドを実行すると、追加したコマンドのみが表示されます.$ php artisan list
終了時...
実際、どれだけの人がArtisanコマンドを削除したいのか分かりませんが、それが可能かどうかを確認し、それが可能かどうかを知っています.
もしこれから関連する仕事があれば、私はこの文章を読んで参考にします.
ソース:https://github.com/wlgns5376/laravel6-artisan-customize
Reference
この問題について([Laravel 6] Artisan command list customize), 我々は、より多くの情報をここで見つけました https://velog.io/@wlgns5376/Laravel-6-Artisan-command-list-customizeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol