Sylius Upgrade Analyzer : L'Outil CLI que j'ai Cree pour Auditer la Migration vers 2.x
Si vous maintenez un projet Sylius 1.x en production, vous savez ce qui arrive. La fin du support approche, et chaque site encore sur 1.x devra migrer vers 2.x. J'ai trouve inacceptable que l'audit de cette migration prenne des jours de travail manuel, alors j'ai construit l'outil qui manquait.
Le probleme
Le guide officiel de migration des plugins Sylius est toujours tague "WIP/experimental" sur docs.sylius.com, et l'ampleur de la mise à jour est massive : Bootstrap + Symfony UX remplacant Semantic UI + jQuery, Twig Hooks remplacant les overrides de templates, Symfony Workflow remplacant winzou, symfony/mailer remplacant SwiftMailer, Payment Requests introduits aux cotes de Payum, API Platform 4 remplacant API Platform 2.7, plus une longue liste de classes supprimees, services renommes et routes retirees.
Chaque agence et chaque lead developer face à cette migration fait la meme chose : ouvrir le projet, fouiller manuellement chaque template Twig surcharge, verifier les plugins un par un dans composer.json contre le Marketplace, grepper les appels jQuery, compter les classes Semantic UI, lire UPGRADE-2.0.md ligne par ligne. Ca prend des jours et le resultat est au mieux un tableur approximatif.
La solution : Sylius Upgrade Analyzer
Sylius Upgrade Analyzer est un outil CLI open-source qui s'installe via Composer, scanne un projet Sylius 1.x, et produit un diagnostic complet de migration en quelques secondes.
composer require --dev pierre-arthur/sylius-upgrade-analyzer
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze
C'est tout. Aucune configuration necessaire. L'outil detecte votre version Sylius depuis composer.lock et execute chaque analyseur sur votre codebase.
Prerequis
- PHP 8.2 ou superieur
- Symfony 6.4 ou 7.2
- Un projet Sylius 1.x (compatible avec Sylius 1.0+)
49 analyseurs organises en 5 familles
L'outil embarque 49 analyseurs construits À partir des fichiers officiels UPGRADE-2.0.md, UPGRADE-API-2.0.md et CHANGELOG-2.0.md. Rien n'est devine, tout est source.
1. Templates & Frontend
Templates Sylius surcharges à migrer vers les Twig Hooks, appels sonata_block_render_event et sylius_template_event à remplacer par hook(), classes CSS Semantic UI encore presentes, usage jQuery et Semantic UI JS dans les assets, et configuration webpack.config.js avec @symfony/webpack-encore.
2. Deprecations & Breaking Changes
Machine à etats winzou vers Symfony Workflow, SwiftMailer vers symfony/mailer, encoders legacy vers password_hashers, Payum vers Payment Requests, renommages de bus de messages, changements de namespaces des command handlers, suppression des email managers, suppression des passerelles de paiement du core, cibles de decorators de services, priorites des order processors, priorites des extensions de form types, contextes Behat deprecies, changements des evenements du menu admin, renommages de cles de traduction, règles de promotion, calculateurs d'expedition, mapping XML Doctrine vers attributs PHP, changements du systeme de fixtures, deprecations multi-boutique channel, changements de configuration de bundles, sylius/calendar vers symfony/clock, renommages de firewalls de securite, suppression de champs du modele utilisateur, classes supprimees (150+), IDs de services renommes, routes supprimees, changements de config LiipImagine, signatures de constructeurs modifiees, changements de syntaxe des filtres de grids, suppression de la config use_webpack, prerequis de versions PHP et Node, classes deplacees entre bundles, changements de visibilite des services, variables d'environnement manquantes pour payment request, et suppression de packages de bundles deprecies comme FOSRest et JMSSerializer.
3. Plugins
Cross-reference chaque plugin Sylius de votre composer.json avec l'API du Sylius Addons Marketplace et Packagist pour determiner la compatibilite avec 2.x.
4. Grid & Resource
Personnalisations custom de grids YAML/PHP, configuration du resource bundle, changements de syntaxe des filtres d'entites de grids.
5. API Platform
Changements de namespaces, prefixes de groupes de serialisation, restructuration des endpoints et changements de signatures des query extensions.
Chaque probleme est classifie comme BREAKING, WARNING ou SUGGESTION, avec une estimation en heures et un lien direct vers la documentation Sylius concernee.
Auto-fix : 41 correcteurs integres
La detection est utile mais la correction est encore mieux. L'outil inclut 41 auto-fixers qui appliquent automatiquement les corrections les plus courantes.
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --fix --dry-run
Le flag --dry-run génère un patch en diff unifie montrant ce qui changerait sans toucher aux fichiers. Quand vous etes confiant, retirez le flag et laissez-le appliquer.
Chaque fixer à un niveau de confiance :
- HIGH : Application sans risque, comme renommer
security.encodersensecurity.password_hashersou mettre à jour les IDs de services supprimes - MEDIUM : Probablement correct mais merite une verification manuelle, comme la conversion de workflows ou le remplacement d'evenements Sonata block
Parmi les 41 fixers : generation YAML de Twig Hooks, conversion winzou vers Symfony Workflow, reecriture SwiftMailer vers symfony/mailer, IDs de services renommes, renommages de firewalls de securite, config LiipImagine, evenements Sonata block vers hook(), syntaxe des filtres d'entites de grids, remplacement calendar-vers-clock, mises à jour de config de bundles, suppression de packages deprecies, corrections d'imports de routing, cles de config supprimees, prefixes de cles de traduction, mises à jour de namespaces API, et plus encore.
6 formats de sortie
Le CLI supporte six formats de sortie selon votre workflow :
- Console (defaut, avec jauge ASCII coloree, ventilation par severite et tableau par categorie)
- JSON (lisible par machine, pour integration CI/CD)
- CSV (compatible Excel avec BOM UTF-8 et separateur point-virgule)
- SARIF (compatible GitHub Code Scanning)
- Markdown (lisible par l'humain, adapte aux PRs et wikis)
- PDF (detaille ci-dessous)
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=json --output=report.json
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=sarif --output=report.sarif
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=csv --output=report.csv
Integration GitHub Actions
L'analyseur s'execute aussi en CI. Ajoutez-le à votre workflow pour faire echouer le build sur les issues breaking, uploader le SARIF vers GitHub Code Scanning, et poster un commentaire de synthese sur les pull requests.
- uses: pierrearthurdemengel/sylius-upgrade-analyzer@v1
with:
project-path: '.'
target-version: '2.2'
fail-on-breaking: 'true'
upload-sarif: 'true'
post-pr-comment: 'true'
Fonctionnalites avancees
Le CLI supporte egalement :
- règles custom via un fichier
.sylius-upgrade-rules.yamlà la racine de votre projet - Gestion de baseline pour sauvegarder et comparer les resultats entre scans
- Sprint planning avec velocite d'equipe configurable
- Analyse multi-projets pour les agences gerant plusieurs sites Sylius
- Comparaison de rapports pour suivre la progression de la migration
- Notifications webhook
Rapports PDF
Le sixieme format de sortie est le PDF, génère via un service web sur sylius-upgrade-analyzer.dev. C'est la seule partie payante. Votre code source ne quitte jamais votre machine : le CLI envoie uniquement le rapport JSON, le service génère un PDF professionnel avec une roadmap de migration et des estimations de temps, puis le renvoie.
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:analyze --format=json --output=report.json
vendor/bin/sylius-upgrade-analyzer sylius-upgrade:upload report.json --api-key=sua_xxx --output=report.pdf
Trois formules sont disponibles :
- Report à 59 EUR pour un PDF unique
- Studio à 299 EUR/an pour des rapports illimites en marque blanche avec le branding de votre agence
- Agency à 799 EUR/an ajoutant des cles multi-utilisateurs et des rapports consolides multi-projets
Liens
- GitHub : github.com/pierrearthurdemengel/sylius-upgrade-analyzer
- Service web : sylius-upgrade-analyzer.dev
La fin du support de Sylius 1.x n'est pas une question de si, mais de quand. Si vous avez des projets à migrer, essayez l'outil et dites-moi ce qui manque.
