Si vous êtes curieux et que vous jetez un oeil de temps en temps à des fichiers composer.json de différents projets, vous remarquerez qu'ils sont tous structurés différemment. Le paquet "composer-normalize" permet de justement normaliser le contenu d'un composer.json, afin de standardiser son écriture.
Composer est un gestionnaire de dépendances pour PHP. Il permet d'installer facilement des bibliothèques dont un projet a besoin.
Le fichier composer.json
décrit justement toutes les dépendances nécessaires au projet, les contraintes de version, et bien d'autres choses.
Lorsque l'on écrit ou génère un fichier composer.json
, les éléments qu'il contient peuvent être positionnés différemment. Ces éléments sont décrits dans un schéma précis.
Composer fourni une option (--sort-packages
) permettant d'ordonner la liste des paquets du projet. Cependant, cela ne correspondait pas au souhait du concepteur de composer-normalize, qui veut obtenir un fichier composer.json
complètement ordonné.
Concrètement, composer-normalize :
- ordonne les éléments en suivant le schéma de Composer
- tri par valeur les entrées dans la section "bin"
- tri par clé les entrées dans les sections "config", "extra", et "scripts-descriptions"
Pour installer composer-normalize, cela fonctionne comme un paquet Composer classique.
Soit vous l'installez dans votre projet :
composer require --dev ergebnis/composer-normalize
Ou alors de manière globale sur votre machine :
composer global require ergebnis/composer-normalize
Pour normaliser votre fichier composer.json
, lancez simplement cette commande, en étant positionné dans le dossier où se trouve le fichier json :
composer normalize
La commande autorise de spécifier l'emplacement du composer.json
:
composer normalize ~/chemin/vers/le/composer.json
Quelques options sont disponibles :
--dry-run
: permet de montrer le futur composer.json sans modifier le fichier--indent-size
: permet de spécifier une taille pour l'indentation--indent-style
: défini le type d'indentation ("space" ou "tab")--no-update-lock
: permet de ne pas mettre à jour le fichier composer.lock si existant
Après exécution de la commande, voici le résultat (à gauche le fichier d'origine, à droite, le fichier normalisé) :
Les entrées sont bien ordonnées selon le schéma Composer.