Node.js ortamında Clang kullanan C, C++, Java, JavaScript, JSON, Objective-C, C# biçimlendiricisi
(clang-format-node.lumir.page)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-formattabanlı 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-formatyerine 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-formatgü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-formatwrapper’ı — 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-stagedgibi 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-formatkullanan legacy kullanıcıların güvenli geçişi
Bağlantılar
- Resmi dokümantasyon: https://clang-format-node.lumir.page
- Repository: https://github.com/lumirlumir/npm-clang-format-node
Henüz yorum yok.