6 puntos por beenzinozino 2025-09-15 | Aún no hay comentarios. | Compartir por WhatsApp

He desarrollado un formateador para C, C++, Java, JavaScript, JSON, Objective-C y C# usando Clang en un entorno Node.js. Este proyecto es una nueva iniciativa basada en el paquete angular clang-format, que ya no recibe mantenimiento (está deprecado).

Actualmente, gracias al interés de muchas personas y a que muchos usuarios legacy se han pasado desde la opción anterior, ya superó las 20,000 descargas mensuales.

Además, este paquete alcanzó cobertura completa de pruebas, y dado que ya existe un PR en Node.js core para cambiar del proyecto angular clang-format anterior a este paquete, parece que pueden usarlo con confianza en cuanto a estabilidad.


Este paquete, basado en clang-format de Clang —famoso como compilador de C de LLVM—, se encarga del formateo de código en varios lenguajes como C, C++, Java y más. Cumple el mismo rol que Prettier, uno de los paquetes más conocidos en el entorno Node.js.

Sin embargo, como Prettier no soporta el formateo de lenguajes nativos como C, C++ o Java, en muchos casos se recurre a clang-format para mantener el estilo en esos lenguajes.

clang-format en el entorno Node.js es especialmente útil cuando, como en el desarrollo de Node.js core, hay que escribir tanto código JavaScript como código nativo en C, C++ y otros lenguajes. En el caso de clang-format tradicional, para usar la versión más reciente del paquete era necesario instalar dependencias adicionales, pero con el paquete actual eso ya no hace falta.

Además, el paquete clang-format anterior tenía aspectos bastante complicados a la hora de integrarlo en workflows con Node.js y npm, como en CI, pero con este paquete actual basta con descargarlo desde npm y configurar un script, lo que ofrece muchas ventajas en entornos de CI.


Los puntos principales son los siguientes:

  • Lenguajes soportados: C, C++, Java, JavaScript, JSON, Objective‑C, C# — formateador basado en clang-format
  • Fully Secure Binaries: compilado directamente desde el código fuente oficial de LLVM. Verificación completa con GitHub Actions Attestation Provenances y npm Build Provenances
  • Zero dependencies: no requiere Python, toolchain de C++ ni subdependencias de npm — funciona solo con Node.js puro
  • Drop-in replacement: diseñado para reemplazar angular/clang-format, ya deprecado
  • Amplio soporte de plataformas: soporte extenso para OS/arquitecturas, versiones de Node.js, imágenes runner de GitHub Actions, imágenes de build de Docker y más
  • Amigable con CI: integración posible con CI mediante instalación por npm + un script sencillo — sin configuraciones nativas complejas
  • Build y release automáticos: cada vez que clang-format se actualiza, GitHub Actions compila, verifica y crea un PR → luego publica automáticamente una nueva versión en npm
  • Indicadores de estabilidad: cobertura completa de pruebas, más de 20,000 descargas mensuales y un PR en curso en Node.js core para reemplazar el paquete anterior de angular
  • Nueva función (1.2.0): wrapper de git-clang-format — formatea solo las líneas modificadas de los archivos cambiados para minimizar el daño al historial de commits en repositorios grandes

¿Por qué es importante git-clang-format?

  • Un reformateo completo puede ensuciar el historial de commits en proyectos grandes.
  • git-clang-format formatea solo las líneas realmente modificadas, lo que permite una adopción gradual y ayuda a lograr consistencia de estilo de forma natural con el tiempo.
  • Permite una aplicación más precisa por línea, no solo por archivo como lint-staged.

¿En qué situaciones es adecuado?

  • Repositorios donde conviven Node.js y código nativo como C/C++/Java
  • Casos en los que se quiere aplicar formateo fácilmente en pipelines de CI sin instalar toolchains nativos
  • Migración segura para usuarios legacy que usaban angular/clang-format

Enlaces

Aún no hay comentarios.

Aún no hay comentarios.