You can reuse and distribute your customizations and features as extensions – packages that can be installed with Composer.
Tip: If you're building customizations specific to your community, then you probably don't need to make an extension. Instead, you can put your customizations in your application-level service providers (app/Providers).
Scaffold out a new Waterhole extension by running the following command:
php artisan waterhole:make:extension acme/example
Your extension will be created inside the extensions directory. It will have a composer.json file and a service provider. Waterhole will automatically configure a Composer path repository for your new extension, and install it as a dependency.
Your extension's composer.json is pretty standard – it contains a PSR-4 autoloading rule, and tells Laravel about your service provider. But it also contains some Waterhole-specific metadata in the extra section which you'll want to fill out:
You should specify which version(s) of Waterhole your extension is compatible with by including it in the require section of your extension's composer.json file:
Once your extension is ready for the world, you can publish it on Packagist. Other Waterhole developers will be able to install your extension by running:
composer require acme/example
An official Waterhole Marketplace is planned, where you'll be able to list and sell your extensions.