Saya mengembangkan formatter C, C++, dan Java dengan Clang di lingkungan Node.js.
(github.com/lumirlumir)Halo, saya telah mengembangkan formatter C, C++, dan Java dengan memanfaatkan Clang di lingkungan Node.js. Proyek ini merupakan proyek baru yang dibangun berdasarkan paket clang-format milik angular yang sudah tidak lagi dipelihara (deprecated).
Sekitar satu-dua bulan lalu saya juga pernah memposting hal yang sama, tetapi karena stabilitas paket ini semakin meningkat dan fitur-fitur baru telah ditambahkan, saya pun menulis postingan ini kembali.
Saat ini berkat banyaknya perhatian dari para pengguna dan karena banyak pengguna legacy yang telah bermigrasi, jumlah unduhan mingguan telah melampaui 10.000. Terima kasih banyak.
Selain itu, paket ini telah mencapai full test coverage, dan bahkan sudah ada PR yang diajukan untuk mengubah Node.js core agar menggunakan paket ini sebagai pengganti proyek clang-format milik angular yang lama. Jadi, sepertinya Anda bisa menggunakannya dengan cukup percaya diri dari sisi stabilitas. (Tentu saja, mungkin masih ada bagian yang terlewat oleh saya...)
Paket ini adalah paket yang menangani formatting kode untuk bahasa C, C++, dan Java berdasarkan clang-format dari Clang, yang terkenal sebagai compiler C dari LLVM. Bisa dibilang perannya sama seperti Prettier, salah satu paket paling terkenal di lingkungan Node.js.
Namun, karena paket Prettier tidak mendukung formatting untuk bahasa C, C++, dan Java, maka untuk menangani formatting pada bahasa-bahasa tersebut biasanya orang menggunakan clang-format.
clang-format di lingkungan Node.js sangat berguna terutama ketika Anda harus menulis kode JavaScript dan kode C/C++ secara bersamaan, seperti dalam pengembangan Node.js core. Pada paket clang-format sebelumnya, Anda perlu memasang dependensi tambahan untuk menggunakan paket tersebut, tetapi dengan paket yang sekarang hal itu tidak lagi diperlukan.
Selain itu, paket clang-format yang lama juga cukup merepotkan untuk diintegrasikan ke workflow yang menggunakan Node.js dan npm, misalnya di CI. Dengan paket yang sekarang, Anda cukup mengunduhnya dari npm lalu mengatur skripnya, sehingga ada banyak keuntungan saat digunakan di lingkungan CI.
Sebagai tambahan, saat ditingkatkan ke versi 1.2.0, fitur-fitur baru juga telah ditambahkan. Perubahan utamanya adalah penambahan paket git-clang-format.
Sebagai contoh, bayangkan situasi ketika Anda sedang mengerjakan proyek C/C++ dan merasa perlu menerapkan formatting kode, lalu mempertimbangkan untuk mengadopsi paket seperti clang-format.
Pada proyek berskala kecil, mungkin tidak menjadi masalah untuk memperbaiki formatting kode secara menyeluruh lalu melakukan commit sekaligus, karena pelacakan history tetap relatif mudah. Namun, pada proyek berskala besar, penerapan formatting kode bisa memaksa Anda merombak formatting kode yang sudah ada secara massal, sehingga ada risiko riwayat commit menjadi berantakan.
Lalu bagaimana jika seorang developer hanya mengubah 100 baris dari total 1000 baris kode, dan saat commit hanya 100 baris yang diubah itu saja yang diperiksa untuk formatting? Pertama, karena formatting hanya diterapkan pada 100 baris yang diubah, Anda tidak perlu merombak semua 1000 baris kode, sehingga pelacakan riwayat commit menjadi lebih nyaman. Kedua, seiring commit terus dilakukan selama proses pengembangan, semakin banyak bagian kode yang akan secara bertahap mendapatkan formatting, sehingga konsistensi formatting kode akan semakin baik seiring waktu.
Untuk itulah paket git-clang-format digunakan. Seperti halnya lint-staged yang meningkatkan kecepatan CI dengan memeriksa hanya file yang di-stage, paket ini melangkah satu tingkat lebih jauh dengan memeriksa hanya baris kode yang berubah di dalam file yang berubah, sehingga pemeriksaan formatting kode bisa diterapkan secara lebih terfokus. Fitur ini juga sebenarnya sudah disediakan secara bawaan oleh LLVM, sehingga saya membungkusnya menjadi paket dan merilisnya.
Cara penggunaan yang tepat telah saya tuliskan di dokumentasi resmi, jadi saya harap paket ini mendapat banyak perhatian. (Namun dokumentasi resminya berbahasa Inggris.) Jika ada hal yang ingin ditanyakan atau pendapat lain, saya akan sangat berterima kasih jika Anda meninggalkannya. Terima kasih telah membaca tulisan panjang ini.
Dokumentasi resmi: https://clang-format-node.lumir.page
Repositori: https://github.com/lumirlumir/npm-clang-format-node
2 komentar
Saya mendukung pengembangan open source!
Terima kasih!!🙇♂️