Pendahuluan
Bun adalah runtime JavaScript yang juga menyediakan package manager bawaan. Bagi developer, ini berarti satu alat dapat dipakai untuk menjalankan kode, mengelola dependensi, dan mengotomatisasi skrip proyek. Saat memulai proyek JavaScript, tugas paling dasar biasanya adalah memasang paket, menghapus paket yang tidak lagi dipakai, lalu memastikan semua dependensi terpasang dengan benar di lingkungan kerja atau CI.
Di artikel ini, fokus kita adalah workflow dasar menggunakan package manager Bun, khususnya tiga perintah yang paling sering dipakai: bun add, bun remove, dan bun install. Kita juga akan melihat bagaimana cara menambahkan dependency biasa dan devDependency, serta file apa yang biasanya berubah setelah proses instalasi.
Artikel ini sengaja membahas hal-hal mendasar agar mudah dipakai saat Anda baru memulai proyek JavaScript dengan Bun. Kita tidak akan masuk terlalu jauh ke topik lanjutan seperti workspace monorepo, override dependency, atau optimasi CI yang kompleks.
Mengenal Peran Package Manager di Bun
Secara umum, package manager bertugas mengelola pustaka pihak ketiga yang dipakai aplikasi Anda. Dalam ekosistem JavaScript, dependensi disimpan dalam file package.json, lalu package manager akan mengunduh paket yang dibutuhkan ke direktori seperti node_modules atau menggunakan mekanisme internal tertentu agar kode dapat dijalankan.
Dengan Bun, alur dasarnya mirip dengan tool lain seperti npm, yarn, atau pnpm, tetapi sintaks perintah utamanya cukup ringkas. Untuk penggunaan sehari-hari, Anda cukup mengingat beberapa skenario berikut:
- Menambah paket untuk kebutuhan runtime atau development.
- Menghapus paket yang tidak lagi dibutuhkan.
- Memasang seluruh dependensi dari file manifest proyek saat baru melakukan clone repository.
Biasanya Anda akan bekerja dengan file-file berikut:
- package.json: mendeskripsikan nama proyek, skrip, dan daftar dependensi.
- bun.lock atau file lock Bun yang setara di proyek Anda: mengunci versi paket agar instalasi konsisten.
- node_modules: direktori hasil instalasi paket yang dipakai aplikasi.
Mengapa file lock penting? Karena range version di package.json sering kali tidak menunjuk satu versi yang benar-benar spesifik. File lock menyimpan resolusi final dependensi sehingga rekan tim, server CI, dan lingkungan produksi cenderung memasang versi yang sama.
Memulai Proyek Sederhana dengan Bun
Sebelum memakai bun add atau bun install, pastikan Anda berada di direktori proyek yang memiliki file package.json. Jika belum ada, Anda bisa membuat proyek baru atau menginisialisasi file tersebut terlebih dahulu.
bun initPerintah ini biasanya membantu membuat struktur awal proyek, termasuk file package.json. Setelah itu, isi minimal package.json bisa terlihat seperti berikut:
{
"name": "belajar-bun",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "bun run index.js"
}
}Dari titik ini, Anda sudah bisa mulai menambahkan paket sesuai kebutuhan proyek.
Menggunakan bun add untuk Menambah Dependency
Menambah dependency biasa
Gunakan bun add ketika Anda ingin menambahkan paket yang dibutuhkan aplikasi saat berjalan di runtime. Contoh umum adalah library HTTP client, framework web, atau utility yang dipakai langsung oleh kode produksi.
bun add axiosSetelah perintah di atas dijalankan, Bun akan:
- Menambahkan axios ke bagian dependencies di package.json.
- Memperbarui file lock Bun.
- Menginstal paket ke lingkungan proyek agar bisa langsung digunakan.
Contoh perubahan pada package.json:
{
"name": "belajar-bun",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "bun run index.js"
},
"dependencies": {
"axios": "^1.7.0"
}
}Dependency biasa cocok untuk paket yang memang dibutuhkan ketika aplikasi dijalankan, baik di lokal, server, maupun container produksi.
Menambah devDependency
Jika paket hanya dipakai saat pengembangan, gunakan opsi --dev atau bentuk singkatnya. Contohnya adalah linter, formatter, testing framework, atau tool build tertentu.
bun add -d typescriptAtau:
bun add --dev typescriptHasilnya, paket akan dimasukkan ke bagian devDependencies:
{
"name": "belajar-bun",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "bun run index.js"
},
"dependencies": {
"axios": "^1.7.0"
},
"devDependencies": {
"typescript": "^5.0.0"
}
}Perbedaan ini penting karena memisahkan paket yang dibutuhkan aplikasi di production dari tool yang hanya dipakai developer. Secara praktik, pemisahan ini membantu menjaga kejelasan proyek dan mempermudah pengelolaan lingkungan deployment.
Menambah beberapa paket sekaligus
Anda juga dapat menambahkan lebih dari satu paket dalam satu perintah:
bun add react react-domUntuk devDependency:
bun add -d eslint prettierIni berguna saat menyiapkan proyek baru agar proses setup lebih cepat dan rapi.
Kapan memakai dependency vs devDependency?
- dependencies: paket dipakai langsung oleh aplikasi saat dijalankan. Contoh: express, axios, react.
- devDependencies: paket hanya dipakai untuk pengembangan, build, linting, atau testing. Contoh: typescript, eslint, vitest.
Kesalahan umum adalah memasukkan tool development ke dependencies. Dampaknya mungkin tidak selalu fatal, tetapi dapat membuat manifest proyek kurang rapi dan berpotensi menambah beban instalasi di lingkungan yang tidak membutuhkannya.
Menggunakan bun remove untuk Menghapus Paket
Saat sebuah paket tidak lagi dipakai, hapus dengan bun remove. Ini lebih baik daripada sekadar menghapus entri manual dari package.json, karena Bun juga akan menyesuaikan state instalasi dan file lock.
bun remove axiosPerintah ini biasanya akan:
- Menghapus paket dari dependencies atau devDependencies di package.json.
- Memperbarui file lock.
- Menyesuaikan hasil instalasi paket di proyek.
Setelah dihapus, pastikan juga kode Anda tidak lagi melakukan import atau require ke paket tersebut. Jika masih ada referensi di source code, aplikasi akan gagal dijalankan.
Contoh kesalahan yang sering terjadi:
- Menghapus paket dari package.json secara manual tetapi lupa membersihkan instalasi.
- Menghapus paket yang ternyata masih dipakai di file lain.
- Menghapus paket transitive secara manual, padahal yang perlu dihapus adalah paket utamanya.
Tips sederhana setelah menjalankan bun remove adalah lakukan pencarian di editor terhadap nama paket tersebut untuk memastikan tidak ada import yang tertinggal.
Menggunakan bun install untuk Memasang Semua Dependensi
bun install dipakai untuk memasang seluruh dependensi yang sudah tercantum di package.json. Ini adalah perintah yang paling sering digunakan setelah Anda melakukan git clone repository proyek orang lain atau saat pertama kali menjalankan proyek di mesin baru.
bun installPerintah ini akan membaca package.json dan file lock, lalu memasang versi paket yang sesuai. Jika file lock tersedia, Bun akan berusaha mengikuti resolusi versi yang sudah terkunci agar hasil instalasi konsisten.
Kapan bun install digunakan?
- Saat baru clone repository.
- Setelah berpindah branch yang memiliki perubahan dependency.
- Setelah menarik perubahan terbaru dari repository.
- Setelah package.json atau file lock berubah.
Dalam workflow tim, bun install penting karena memastikan lingkungan lokal Anda sinkron dengan definisi dependensi proyek.
Apa bedanya dengan bun add?
Perbedaannya sederhana:
- bun add menambahkan paket baru dan langsung menginstalnya.
- bun install memasang semua paket yang sudah didefinisikan di manifest proyek, tanpa menambahkan paket baru secara eksplisit.
Jadi, jika Anda ingin memasang lodash sebagai dependency baru, gunakan bun add lodash. Jika repository sudah punya daftar dependency dan Anda hanya ingin memasangnya ke mesin lokal, gunakan bun install.
File yang Berubah Setelah Instalasi
Saat Anda menjalankan bun add, bun remove, atau bun install, ada beberapa file dan direktori yang biasanya berubah. Memahami ini penting agar Anda tahu file mana yang perlu diperiksa dan mana yang sebaiknya di-commit ke repository.
1. package.json
File ini berubah ketika Anda menambah atau menghapus paket menggunakan bun add dan bun remove. Bun akan menambahkan entri ke dependencies atau devDependencies, atau menghapusnya saat paket dibuang.
2. File lock Bun
File lock akan diperbarui untuk mencatat versi final yang dipilih. File ini sangat penting untuk menjaga konsistensi dependency di seluruh tim. Dalam praktik umum, file lock perlu disimpan ke version control agar hasil instalasi tidak berubah-ubah antar mesin.
3. node_modules
Direktori ini berisi paket hasil instalasi. Biasanya direktori ini tidak di-commit ke repository karena dapat dibangkitkan ulang dengan menjalankan bun install. Karena ukurannya bisa besar, menambahkannya ke Git umumnya bukan praktik yang baik.
Praktik umum: commit package.json dan file lock, tetapi abaikan node_modules melalui .gitignore.
Contoh Alur Kerja Dasar Developer
Berikut contoh alur kerja sederhana saat memulai proyek JavaScript dengan Bun:
- Inisialisasi proyek.
- Tambahkan paket runtime yang dibutuhkan aplikasi.
- Tambahkan tool development sebagai devDependency.
- Jalankan aplikasi atau skrip sesuai kebutuhan.
- Hapus paket yang tidak lagi dipakai.
Contoh perintahnya:
bun init
bun add axios
bun add -d typescript eslint
bun install
bun remove axiosUrutan di atas mungkin terlihat sederhana, tetapi sudah mencerminkan workflow harian yang umum: membuat proyek, menambahkan dependency, memasang kebutuhan development, lalu membersihkan paket yang tidak terpakai.
Kesalahan Umum dan Tips Debugging
1. Salah menempatkan paket
Jika paket runtime masuk ke devDependencies, aplikasi bisa gagal di lingkungan tertentu. Sebaliknya, jika semua tool development masuk ke dependencies, manifest proyek menjadi kurang bersih. Selalu pikirkan: apakah paket ini dibutuhkan saat aplikasi berjalan, atau hanya saat pengembangan?
2. Lupa menjalankan install setelah menarik perubahan
Jika rekan tim mengubah package.json atau file lock, Anda mungkin akan melihat error seperti modul tidak ditemukan. Solusinya sering kali sederhana: jalankan bun install.
3. Mengedit package.json manual tanpa sinkronisasi
Mengubah dependency secara manual memang memungkinkan, tetapi lebih aman memakai perintah resmi seperti bun add dan bun remove agar file lock dan hasil instalasi ikut diperbarui dengan benar.
4. Masih ada import ke paket yang sudah dihapus
Setelah bun remove, cek kembali semua file source. Jika ada import yang tertinggal, Bun atau runtime akan menampilkan error modul tidak ditemukan.
Penutup
Untuk penggunaan dasar, package manager bawaan Bun cukup mudah dipahami. Anda hanya perlu mengingat tiga perintah inti:
- bun add untuk menambahkan paket baru.
- bun remove untuk menghapus paket yang tidak dipakai.
- bun install untuk memasang semua dependensi dari proyek.
Selain itu, pahami juga perbedaan antara dependencies dan devDependencies, serta kebiasaan penting seperti menyimpan package.json dan file lock ke repository. Dengan fondasi ini, Anda sudah memiliki alur kerja yang cukup untuk memulai banyak proyek JavaScript sederhana menggunakan Bun secara rapi dan konsisten.
Komentar
0 komentar
Masuk ke akun kamu untuk ikut berkomentar.
Belum ada komentar
Jadilah yang pertama ikut berdiskusi!