champs-libres/composer-bundle-migration
Composer plugin that syncs Doctrine migration files from installed bundles/packages into your root project on post-install/update. Configure destination via extra.appMigrationsDir (default app/DoctrineMigrations) and source via extra.migration-source (default Resources/migrations).
php artisan migrate without bundles).database/migrations/), reducing immediate need but not eliminating use cases (e.g., multi-module projects with shared migrations).post-install-cmd/post-update-cmd are standard but may conflict with existing scripts (e.g., Laravel’s post-autoload-dump).app/DoctrineMigrations (Symfony default) or custom paths; Laravel’s database/migrations/ would need alignment.composer install/update, which may slow pipelines or fail if migrations are incomplete.Resources/migrations may break if not updated to use the new location.composer.json scripts that could conflict?| Component | Fit Level | Notes |
|---|---|---|
| Symfony | High | Native DoctrineMigrationsBundle support; aligns with Symfony’s conventions. |
| Laravel | Medium | Requires Doctrine DBAL setup; migrations live in database/migrations/. |
| Composer | High | Leverages standard post-* hooks. |
| Doctrine DBAL | High | Core dependency for migration execution. |
| Custom Bundles | Low | Bundles must opt-in via migration-source config. |
composer require champs-libres/composer-bundle-migration ~1.0
composer.json:
"scripts": {
"post-install-cmd": ["ComposerBundleMigration\\Composer\\Migrations::synchronizeMigrations"],
"post-update-cmd": ["ComposerBundleMigration\\Composer\\Migrations::synchronizeMigrations"]
},
"extra": {
"appMigrationsDir": "database/migrations" // Laravel example
}
migration-source config if needed.doctrine/dbal).database/migrations).Resources/migrations; these must be updated.composer update to trigger initial sync.database/migrations").composer install/update.composer install/update; manual runs may be needed.appMigrationsDir for stale files.migration-source configs if bundle migration paths change.migration-source configs in dependent bundles.appMigrationsDir.CONTRIBUTING.md section on migration management.migration-source config for bundle maintainers.composer --profile to measure impact.composer validate-migrations script to fail fast if sync fails.| Scenario | Impact | Mitigation |
|---|---|---|
| Composer Hook Fails | Migrations not synced | Add manual sync step in CI/CD. |
| Duplicate Migration Files | Overwrites/conflicts | Implement filename deduplication. |
| Bundle Migration Path Changes | Broken sync | Monitor bundle updates. |
| Permission Denied | Sync fails silently | Use composer --working-dir with correct permissions. |
| Doctrine Misconfiguration | Migrations fail to execute | Validate DBAL setup pre-sync. |
migration-source config requirements.migration-source.How can I help you explore Laravel packages today?