6 points par beenzinozino 2025-09-15 | Aucun commentaire pour le moment. | Partager sur WhatsApp

J’ai développé un formateur C, C++, Java, JavaScript, JSON, Objective-C et C# basé sur Clang pour l’environnement Node.js. Ce projet est une nouvelle initiative fondée sur le package angular clang-format, désormais obsolète (deprecated) et non maintenu.

Beaucoup de personnes s’y intéressent actuellement, et grâce à la migration de nombreux utilisateurs historiques, le nombre de téléchargements mensuels a dépassé les 20 000.

En outre, ce package a atteint une couverture de tests complète, et une PR a été ouverte pour que le cœur de Node.js utilise ce package à la place de l’ancien projet angular clang-format, ce qui en fait une solution dont la stabilité peut être utilisée en toute confiance.


Ce package est basé sur clang-format de Clang, célèbre compilateur C de LLVM, et permet de formater le code de divers langages comme C, C++, Java, etc. Il joue le même rôle que Prettier, l’un des packages les plus connus dans l’environnement Node.js.

Cependant, Prettier ne prend pas en charge le formatage des langages natifs comme C, C++ ou Java, c’est pourquoi clang-format est souvent utilisé pour gérer le formatage dans ces langages.

Dans l’environnement Node.js, clang-format est particulièrement utile lorsqu’il faut écrire à la fois du code JavaScript et du code natif comme du C ou du C++, comme dans le développement du cœur de Node.js. Avec clang-format auparavant, il fallait installer des dépendances supplémentaires pour utiliser la dernière version du package, mais ce n’est plus nécessaire avec le package actuel.

De plus, l’ancien package clang-format était assez délicat à intégrer dans des workflows basés sur Node.js et npm, notamment en CI, tandis qu’avec le package actuel il suffit simplement de le télécharger depuis npm et de configurer un script, ce qui apporte de nombreux avantages en environnement CI.


Les points clés sont les suivants :

  • Langages pris en charge : C, C++, Java, JavaScript, JSON, Objective‑C, C# — formateur basé sur clang-format
  • Fully Secure Binaries : construits directement à partir des sources officielles de LLVM. Vérification complète avec GitHub Actions Attestation Provenances et npm Build Provenances
  • Zero dependencies : aucun besoin de Python, de toolchain C++ ni de sous-dépendances npm — fonctionne uniquement avec Node.js
  • Drop-in replacement : conçu pour remplacer angular/clang-format, désormais obsolète
  • Large prise en charge des plateformes : support étendu des OS/architectures, versions de Node.js, images de runners GitHub Actions, images de build Docker, etc.
  • Compatible CI : intégration possible en CI avec une installation npm et un script simple — sans configuration native complexe
  • Build et release automatiques : à chaque mise à jour de clang-format, GitHub Actions construit, vérifie et crée une PR → puis publie automatiquement une nouvelle version sur npm
  • Indicateurs de stabilité : couverture de tests complète, plus de 20 000 téléchargements mensuels, PR en cours dans le cœur de Node.js pour remplacer l’ancien package angular
  • Nouvelle fonctionnalité (1.2.0) : wrapper git-clang-format — ne formate que les « lignes modifiées » des fichiers changés afin de limiter la dégradation de l’historique des commits dans les grands dépôts

Pourquoi git-clang-format est-il important ?

  • Un reformatage complet peut polluer l’historique des commits dans les grands projets.
  • git-clang-format ne formate que les lignes effectivement modifiées, ce qui permet une adoption progressive et assure naturellement la cohérence du style au fil du temps.
  • Contrairement à lint-staged, qui agit au niveau des fichiers, il permet une application plus fine au niveau des lignes.

Dans quels cas est-ce adapté ?

  • Dépôts où coexistent Node.js et du code natif comme C/C++/Java
  • Cas où l’on souhaite appliquer simplement le formatage dans une pipeline CI sans installer de toolchain native
  • Migration sûre pour les utilisateurs historiques de angular/clang-format

Liens

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.