Do you know about Laravel vendor publish?

Patrick Wan
2 min readOct 9, 2023

Laravel vendor publish allow you to select which vendor config, public assets or resources file to publish

Laravel

The vendor:publish command in Laravel did not have a built-in search functionality on the prompt. This means that when you run php artisan vendor:publish, it lists all available package providers, and you need to select the provider you want to publish files for manually by typing its number.

However, you can implement a custom solution to add search functionality to the vendor:publish prompt by extending the VendorPublishCommand class provided by Laravel. Here's a high-level overview of how you can do it:

  1. Create a new command class that extends the VendorPublishCommand class:
php artisan make:command CustomVendorPublish

2. In your CustomVendorPublish command class, override the getAvailableProviders method to filter the available providers based on the user's search input:

protected function getAvailableProviders()
{
$providers = parent::getAvailableProviders();

$searchTerm = $this->ask('Enter a search term to filter providers:');

if (!empty($searchTerm)) {
$providers = array_filter($providers, function ($provider) use ($searchTerm) {
return str_contains($provider, $searchTerm);
});
}

return $providers;
}

3. In your CustomVendorPublish command class, override the handle method to call the parent handle method:

public function handle()
{
parent::handle();
}

4. Register your custom command in the app/Console/Kernel.php file:

protected $commands = [
// ...
Commands\CustomVendorPublish::class,
];

Now, when you run php artisan custom:vendor-publish, it will prompt you to enter a search term. It will then list the package providers that match the search term, and you can select the one you want to publish files for.

vendor publish

Read More Laravel Stories:

--

--

Patrick Wan

My name’s Patrick. I’m a Software Developer, experience in Laravel, Vue Js, React Js, Livewire, Jquery, Codegniter, NPM, GIT. I have 5 years plus experience.