6 puan yazan beenzinozino 2025-09-15 | Henüz yorum yok. | WhatsApp'ta paylaş

Node.js ortamında Clang kullanan C, C++, Java, JavaScript, JSON, Objective-C, C# biçimlendiricisi geliştirdim. Bu proje, artık bakımı yapılmayan (deprecated) Angular clang-format paketini temel alarak yeniden başlatılan bir projedir.

Şu anda birçok kişi ilgi gösteriyor ve mevcut legacy kullanıcıların önemli bir kısmı geçiş yaptığı için aylık indirme sayısı 20.000’i aştı.

Ayrıca bu paket tam test kapsamına ulaştı ve Node.js core tarafında mevcut Angular clang-format projesi yerine bu paketin kullanılmasına geçilmesini amaçlayan bir PR da açılmış durumda; dolayısıyla kararlılık açısından güvenle kullanılabilir gibi görünüyor.


Bu paket, LLVM’in C derleyicisi olarak bilinen Clang’ın clang-format aracını temel alarak C, C++, Java gibi çeşitli dillerde kod biçimlendirmesini yöneten bir pakettir. Node.js ekosistemindeki en bilinen paketlerden biri olan Prettier ile aynı rolü üstlenir.

Ancak Prettier paketi C, C++, Java gibi native dillerin biçimlendirilmesini desteklemediği için, bu dillerde biçimlendirme için çoğu zaman clang-format kullanılır.

Node.js ortamındaki clang-format, özellikle Node.js core geliştirmesinde olduğu gibi JavaScript kodu ile C, C++ gibi native kodların birlikte yazılması gerektiğinde çok faydalıdır. Mevcut clang-format kullanımında, paketin en güncel sürümünü kullanmak için ek bağımlılıkların kurulması gerekiyordu; ancak bu pakette buna gerek yoktur.

Ayrıca mevcut clang-format paketi, CI gibi ortamlarda Node.js ve npm tabanlı workflow’lara entegre etmek açısından oldukça zahmetliydi; fakat bu pakette yalnızca npm üzerinden indirip script ayarı yapmak yeterli olduğu için CI ortamlarında birçok avantaj sağlar.


Başlıca noktalar şöyle:

  • Desteklenen diller: C, C++, Java, JavaScript, JSON, Objective‑C, C# — clang-format tabanlı biçimlendirici
  • Fully Secure Binaries: LLVM’in resmi kaynaklarından doğrudan derlenir. GitHub Actions Attestation Provenances ve npm Build Provenances ile tam doğrulama
  • Zero dependencies: Python, C++ toolchain, npm alt bağımlılıkları gerekmez — yalnızca saf Node.js ile çalışır
  • Drop-in replacement: kullanımdan kaldırılan angular/clang-format yerine geçecek şekilde tasarlanmıştır
  • Geniş platform desteği: OS/mimari, Node.js sürümleri, GitHub Actions runner image’ları, Docker build image’ları vb. için kapsamlı destek
  • CI dostu: npm kurulumu + basit script ile CI entegrasyonu mümkün — karmaşık native ayarlar gerekmez
  • Otomatik build·release: her clang-format güncellemesinde GitHub Actions build·doğrulama·PR oluşturma işlemlerini yürütür → npm’de yeni sürüm otomatik yayımlanır
  • Kararlılık göstergeleri: tam test kapsamı, aylık 20.000+ indirme, Node.js core’da mevcut Angular paketini değiştirme PR’ı devam ediyor
  • Yeni özellik (1.2.0): git-clang-format wrapper’ı — değişen dosyaların yalnızca ‘değişen satırlarını’ biçimlendirerek büyük repository’lerde commit geçmişinin bozulmasını en aza indirir

git-clang-format neden önemli?

  • Tüm repository’yi yeniden biçimlendirmek, büyük projelerde commit geçmişini kirletebilir.
  • git-clang-format, gerçekten değiştirdiğiniz satırları biçimlendirerek kademeli benimsemeyi mümkün kılar ve zaman içinde stil tutarlılığını doğal biçimde sağlar.
  • lint-staged gibi dosya düzeyinde değil, satır düzeyinde daha ince ayarlı uygulama yapılabilir.

Hangi durumlar için uygun?

  • Node.js ile C/C++/Java gibi native kodların birlikte bulunduğu repository’ler
  • CI pipeline’ında native toolchain kurmadan biçimlendirmeyi kolayca uygulamak isteyenler
  • angular/clang-format kullanan legacy kullanıcıların güvenli geçişi

Bağlantılar

Henüz yorum yok.

Henüz yorum yok.