saucebase / module-installer
Custom Composer installer for Sauce Base modules (type: saucebase-module). Installs to Modules/<Name> with configurable base dir.
Installs: 7
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:composer-plugin
pkg:composer/saucebase/module-installer
Requires
- php: ^8.4
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.0
- phpunit/phpunit: ^12.3
README
This Composer plugin installs Sauce Base modules into the correct directory. It ships with sauce-base/core, so every module that your project requires is placed where Sauce Base can find and load it. The installer stays compatible with nWidart/laravel-modules and offers a Sauce Base-focused alternative to joshbrw/laravel-module-installer.
How It Works
- Registers a Composer installer for the module package type (defaults to laravel-module).
- Installs each module inside the Sauce Base modules directory (Modules/by default).
- Turns package names such as saucebase/example-moduleinto StudlyCase directory names (ExampleModule).
- Lets the root package override the install path with the extra.module-diroption.
Requirements
- PHP 8.4 or newer
- Composer 2.x
- A project based on sauce-base/core(the core already requires this plugin)
Installation
sauce-base/core already requires this package. When you install the core, Composer pulls in the plugin and activates it through the Saucebase\\ModuleInstaller\\Plugin class, so a typical Sauce Base project needs no extra configuration.
Need the installer for a different Composer project? Require it directly:
composer require saucebase/module-installer
Configuring the Module Type
The installer registers the laravel-module package type by default. If your application needs a different type, declare it in the root package extra section:
{
    "extra": {
        "module-type": "saucebase-module"
    }
}
Any modules you install must set their composer.json type to the same value.
Configuring the Install Location
By default, modules are installed under Modules/ at the project root. You can change this by adding a module-dir key to your application extra section:
{
    "extra": {
        "module-dir": "MyModules"
    }
}
With the configuration above, a module published as saucebase/example-module installs to MyModules/ExampleModule.
Creating Sauce Base Modules
To ship a module that works with this installer:
- 
Set the package typein the modulecomposer.jsonto whatever your application expects (defaults tolaravel-module).
- 
Follow the Sauce Base module folder conventions; your module code should live inside the directory created by the installer. 
- 
Ask consumers to install the module through Composer: composer require vendor/example-module During installation, the plugin converts the package slug into the final directory name. For example, vendor/example-modulebecomesModules/ExampleModuleunlessmodule-diroverrides it.
Local Development
Clone the repository and install dependencies:
composer install
Useful scripts:
- composer test– run the PHPUnit suite (- tests/).
- ./vendor/bin/pint– apply Laravel Pint formatting (add- --testfor CI-style checks).
- composer validate– verify Composer metadata.
License
Licensed under the MIT License.