Comment générer un Changelog en utilisant les Commits conventionnels

Une des choses les plus difficiles au monde, après avoir vidé le cache et donné les noms aux variables, est de comprendre ce qui change d’une version à l’autre de votre code. L'utilisation du versioning sémantique est un standard de facto, en particulier dans les bibliothèques opensource. Mais après seulement 3 mois, comment pouvons-nous nous souvenir des différences entre les versions 2.0.1 et 2.0.2 de notre projet?

L'utilisation de CHANGELOG.md devient plus que nécessaire, à la fois pour rappeler ce qui a changé et pour informer ceux qui utilisent notre code de ce qui a réellement changé. Mais je suis un développeur paresseux, je n’aurai jamais la capacité de me souvenir de ce que j’ai fait à chaque commit et de me rappeler à chaque sortie de mettre à jour manuellement un fichier. Après avoir cherché pendant des heures sur Google, j'ai découvert que la réponse que je cherchais était devant mon nez dès le début. L’historique de git contient toutes les informations dont vous avez besoin pour générer automatiquement un fichier changelog!

Mais avant de parler de la création automatique de nos changelogs, je dois vous présenter les commits classiques.

Commits conventionnels

La spécification Commit conventionnelle est une convention légère au-dessus des messages de validation. Il fournit un ensemble simple de règles permettant de créer un historique de validation explicite, facilitant ainsi l’écriture d’outils automatisés. Cette convention est complémentaire à SemVer en décrivant les fonctionnalités, les correctifs et les modifications importantes apportées aux messages de validation.

Les commits auront une structure standard permettant de décrire exactement ce qui s'est passé dans ce commit:

comment créer un commit avec des commits conventionnels

ou si vous utilisez la version courte de votre terminal:
git commit -a -m " [portée facultative]: "

Chaque commit a un type qui tombe dans une catégorie prédéfinie, les catégories spécifiques sont:

  • feat: introduit une nouvelle fonctionnalité dans la base de code (ceci est en corrélation avec un MINORin SemVer es: 2.0.0 -> 2.1.0).
  • correctif: un correctif dans votre base de code (corrélé avec un PATCH dans quelques fois: 2.0.0 -> 2.0.1).
  • BREAKING CHANGE: est un changement total de votre code, il peut également être utilisé avec une balise précédente telle que BREAKING CHANGE: feat: (ceci est en corrélation avec un MAJOR dans SemVer es: 2.0.0 -> 3.0.0).
  • docs: une modification du fichier README ou de la documentation
  • refactor: changement de code de production axé sur la lisibilité et le style du code de mise à niveau

La portée spécifie ce que vous avez changé, de préférence en un seul mot.
La description est une ligne qui spécifie quelle est la modification.

Dans Jobtome, nous utilisons également d’autres types pour l’usage quotidien, tels que corvée:, test:, optimisation:

Créez automatiquement votre Changelog

L'un des outils qui utilisent les commits conventionnels est la version standard. Standard-version est un paquet npm qui gère automatiquement la gestion des versions de notre code et crée pour nous de superbes journaux de modifications remplis de nombreuses informations.

Utiliser le paquet standard-version est très simple, après l'avoir installé dans nos dépendances (npm I --save-dev version-standard), il suffit d'ajouter un script dans notre package.json.

script dans votre package.json pour utiliser la version standard

Il ne nous reste plus qu'à exécuter le script de version avant de publier notre version.

En version standard automatique, le contrôle des validations effectuées depuis la dernière version:

  • faire une version bosse (MAJOR, MINOR, PATCH)
  • créer un tag git qui peut être poussé avec l'option --tags
  • générer un beau changelog comme celui-ci:
Exemple de CHANGELOG.md généré
  • Lien vers le commit spécifique
  • Lien vers le diff de la version
  • Division par type de commit

Si vous voulez mieux regarder le journal des modifications de la capture d'écran ci-dessus, vous pouvez le trouver ici:

Si vous avez aimé l'article, applaudissez et suivez :)
Thx et restez à l'écoute