- Menggunakan File .env
- File Konfigurasi bunfig.toml
- Menjalankan Aplikasi dengan Environment
- Menambahkan Environment untuk Production
- Kesimpulan
Halo teman-teman semuanya, pada pembahasan sebelumnya kita telah mempelajari cara menggunakan Package Manager di Bun untuk menambahkan, menghapus, dan mengelola dependensi proyek dengan mudah. Sekarang, kita akan masuk ke topik yang tidak kalah penting, yaitu Environment & Configuration di Bun.
Dalam pengembangan aplikasi, sering kali kita membutuhkan cara untuk menyimpan konfigurasi seperti port server, API key, atau koneksi database tanpa menuliskannya langsung di dalam kode. Bun menyediakan dua pendekatan utama untuk hal ini: file .env dan file konfigurasi bunfig.toml.
Menggunakan File .env
Bun mendukung environment variables secara langsung menggunakan file .env, mirip dengan Node.js dan framework modern lainnya.
File .env biasanya berisi pasangan key-value yang digunakan untuk menyimpan variabel rahasia atau pengaturan aplikasi.
Buat file baru dengan nama .env di root proyek, lalu isi dengan contoh berikut:
PORT=3000
DATABASE_URL=mysql://root:12345@localhost:3306/bun_app
API_KEY=ABC123XYZ
Untuk mengakses nilai-nilai tersebut di dalam kode JavaScript atau TypeScript, kita dapat menggunakan process.env.
Contoh penggunaan:
console.log("Server berjalan di port:", process.env.PORT);
console.log("Koneksi database:", process.env.DATABASE_URL);
Secara default, Bun akan secara otomatis memuat file .env saat aplikasi dijalankan menggunakan bun run. Kita tidak perlu menginstal library tambahan seperti dotenv, karena fitur ini sudah menjadi bagian dari Bun.
Jika kita ingin menggunakan file .env lain (misalnya .env.production), kita dapat memanggilnya secara manual menggunakan perintah berikut:
bun --env-file=.env.production run app.js
File Konfigurasi bunfig.toml
Selain .env, Bun juga menyediakan file konfigurasi bernama bunfig.toml yang digunakan untuk mengatur perilaku dan konfigurasi global proyek Bun.
File ini biasanya terletak di direktori utama proyek. Untuk membuatnya, cukup buat file bernama bunfig.toml dan isi dengan konfigurasi berikut sebagai contoh:
name = "bun-app"
version = "1.0.0"
port = 3000
[install]
peer = true
optional = false
[define]
APP_ENV = "development"
API_URL = "https://api.santrikoding.com"
Penjelasan:
namedanversion- digunakan untuk mendefinisikan identitas proyek.port- bisa digunakan untuk mendefinisikan port default server.[install]- menentukan perilaku saat menjalankanbun install.[define]- digunakan untuk menyuntikkan global variables ke seluruh aplikasi pada waktu build atau runtime.
Untuk mengakses nilai yang didefinisikan di [define], kita bisa memanggilnya langsung seperti variabel global:
console.log(APP_ENV);
console.log(API_URL);
Menjalankan Aplikasi dengan Environment
Sebagai contoh, kita buat file server.js sederhana berikut:
const port = process.env.PORT || 8080;
Bun.serve({
port,
fetch(req) {
return new Response(`Server berjalan di port ${port}`);
},
});
Jika kita memiliki file .env seperti berikut:
PORT=4000
Lalu jalankan perintah:
bun run server.js
Maka output-nya akan menampilkan teks:
Server berjalan di port 4000
Artinya, Bun berhasil membaca variabel dari file .env dan menggunakannya di dalam aplikasi.
Menambahkan Environment untuk Production
Untuk membedakan pengaturan antara development dan production, kita bisa membuat beberapa file environment, misalnya:
.env.development.env.production
Kemudian pada saat menjalankan server, kita tentukan file environment yang ingin digunakan:
bun --env-file=.env.production run server.js
Bun akan membaca file .env.production dan menerapkan konfigurasi yang sesuai.
Kesimpulan
Bun menyediakan sistem Environment dan Configuration yang sederhana namun kuat melalui dua mekanisme utama: file .env untuk variabel rahasia dan file bunfig.toml untuk konfigurasi global proyek.
Keduanya terintegrasi langsung dengan Bun tanpa perlu library tambahan, membuat pengaturan proyek menjadi lebih bersih dan efisien.
Pada artikel selanjutnya, kita akan mempelajari tentang Module System di Bun (import, export, dan kompatibilitas dengan Node.js).
Terima Kasih.
Artikel ini dibaca sebanyak 718 kali
{ setTimeout(() => { showShimmer = false; }, 300); })"
:class="{'opacity-0': !loaded, 'opacity-100': loaded}"
class="lazy w-full h-auto rounded-xl border border-white dark:border-neutral-700/80 transition-opacity duration-500"
loading="lazy"
/>
SAWERIA
Memuat komentar...