When you are building a new plugin, you can either do everything from scratch or you can use the following command which will scaffold the base files for the plugin for you:
php artisan vanguard:make-plugin Foo
The command from above will generate a new folder called
Foo inside the
/plugins directory, which is the default location for all
Vanguard plugins and it will update your main
composer.json file to
reference the newly installed plugin.
The root namespace for all plugin classes created in this case will
Each plugin has one main class which basically serves
as a service provider for the plugin.
In our case, the main plugin service provider is defined inside
plugins/Foo/src/Foo.php file (it will always have the same name as the plugin itself if you scaffold the plugin using
The generated plugins' top-level structure will look like the following:
plugins -- Foo ---- config ---- database ---- resources ---- routes ---- src ---- tests ---- .gitignore ---- composer.json ---- package.json ---- webpack.mix.js
Since not all plugins will have all the above, you are free to customize the directory structure however you want.