Composer Integration
FastForward DevTools is exposed through both a Composer plugin and a dedicated console application.
Startup Chain
bin/dev-toolsloadsbin/dev-tools.php.bin/dev-tools.phpprefers the consumer project'svendor/autoload.phpand falls back to the package autoloader.bin/dev-tools.phpstartsFastForward\DevTools\Console\DevToolsand appends--no-plugins.FastForward\DevTools\Container\ContainerFactory::get(FastForward\DevTools\Console\DevTools::class)resolves the shared application container fromFastForward\DevTools\ServiceProvider\DevToolsServiceProvider.FastForward\DevTools\Console\CommandLoader\DevToolsCommandLoaderlazily discovers#[AsCommand]classes from the command namespace.FastForward\DevTools\Composer\Capability\DevToolsCommandProviderlater exposes that same command set to Composer.
Composer Plugin Classes
| Class | Purpose |
|---|---|
FastForward\DevTools\Composer\Plugin
|
Registers the command provider and runs dev-tools:sync
after
Composer install and update. |
FastForward\DevTools\Composer\Capability\DevToolsCommandProvider
|
Exposes Symfony command instances to Composer through proxy commands while filtering names and aliases already registered by Composer or the root project's scripts. |
FastForward\DevTools\Composer\Command\ProxyCommand
|
Adapts one Symfony command to Composer's command provider contract. |
FastForward\DevTools\Console\DevTools
|
Console application used by the local binary. |
Why --no-plugins
Is Appended
The local binary already knows which commands it needs. Appending
--no-plugins
keeps the standalone application predictable and avoids
pulling unrelated Composer plugins into the command runtime.