Bagi kamu yang baru terjun ke dunia cross-platform development menggunakan React Native, mungkin sempat terkejut melihat ribuan file memenuhi folder proyek setelah menjalankan satu perintah. Belum lagi saat melakukan build Android, tiba-tiba terminal mendownload ratusan file .jar yang asing.
Jangan panik! Itu bukan virus. Mari kita bedah bagaimana ekosistem Node.js bekerja sama dengan Gradle di Android.
1. package.json: Si Buku Resep Rahasia
Dalam setiap proyek Node.js, file package.json adalah jantungnya. Bayangkan file ini sebagai buku resep. Di dalamnya tertulis daftar “bahan-bahan” (dependencies) yang dibutuhkan aplikasi agar bisa berjalan, lengkap dengan versi spesifiknya.
2. npm install dan Misteri node_modules
Saat kamu mengetik perintah npm install, Node Package Manager (NPM) akan membaca buku resep tadi dan pergi “belanja” ke server pusat.
-
node_modules: Ini adalah keranjang belanjaan kamu. Folder ini berisi seluruh source code dari library yang kamu butuhkan.
-
Isinya apa saja? Mayoritas adalah kode JavaScript, namun untuk React Native, folder ini juga menyimpan kode sumber Native (Java/Kotlin untuk Android, Swift/Objective-C untuk iOS).
3. Kenapa Gradle Ikut Mendownload File?
Di sinilah letak kebingungan banyak orang. Jika npm install sudah selesai, kenapa saat menjalankan .\gradlew clean atau build Android, terminal masih mendownload banyak file seperti netty-codec-http.jar atau builder.jar?
Jawabannya adalah: Native Bridge.
Beberapa library React Native (seperti database SQLite atau Gesture Handler) membutuhkan akses langsung ke sistem operasi Android.
-
Gradle (alat perakit aplikasi Android) akan melihat ke dalam folder
node_modules. -
Gradle menemukan instruksi build Android di sana.
-
Untuk mengompilasi kode Java tersebut menjadi aplikasi (.apk), Gradle membutuhkan “alat pertukangan” tambahan berupa file .jar (Java Archive).
-
Gradle mendownload file-file tersebut dari Maven Central atau Google Repository, bukan dari server npm.
4. Hubungan Antar Komponen (Tabel Ringkasan)
| Komponen | Tugas Utama | Sumber Download |
| NPM | Mengelola library JavaScript | npmjs.com |
| node_modules | Menyimpan source code library | Disk Lokal |
| Gradle | Merakit kode menjadi aplikasi Android | Maven / Google Repo |
| .jar / .aar | Library pendukung bahasa Java/Kotlin | Maven / Google Repo |
Berikut adalah alur bagaimana mereka saling terikat:
- package.json memerintahkan NPM untuk mengisi folder node_modules.
- Di dalam folder node_modules/nama-library/android, terdapat instruksi khusus untuk Android.
- Saat kamu menjalankan perintah Android (gradlew), Android Studio/Gradle akan “mengintip” ke dalam folder node_modules tersebut.
- Contoh, Gradle menyadari: “Oh, library Quick SQLite ini butuh file Java pendukung.” Lalu Gradle mendownload file .jar dan .aar agar library tersebut bisa dikompilasi menjadi bagian dari file .apk kamu nanti.
Kesimpulan: Kenapa Prosesnya Berat?
Proses build pertama kali terasa sangat lama karena sistem sedang membangun “fondasi” di komputer kamu. Gradle harus menyiapkan semua build tools dan dependensi Java yang dibutuhkan oleh library-library di node_modules.
Kabar baiknya, setelah proses download pertama ini sukses, Gradle akan menyimpan file tersebut di dalam cache. Build berikutnya akan terasa jauh lebih cepat karena sistem hanya perlu merakit kode yang sudah ada.
Saran Pro: Jika folder node_modules kamu membengkak, jangan pernah menghapusnya secara manual lewat file explorer jika sedang proses build. Pastikan selalu menggunakan .gitignore agar folder ini tidak ikut terupload ke GitHub karena ukurannya yang sangat besar!
