Memisahkan konfigurasi dan kode dengan dotenv
Story ini merupakan bagian dari KamisJS yang selalu hadir setiap hari kamis di Extra Integer.
Saat ini perangkat lunak berjalan sebagai sebuah service. Konvensi yang sangat akrab di telinga kita adalah The Twelve-Factor App. Salah satu dari poinnya yaitu penyimpanan konfigurasi dalam sebuah environment secara terpisah dengan kode.
Ada beberapa cara menerapkan pemisahan konfigurasi. Pendekatan pertama dengan meng-ignore file konfigurasi dari kode. Cara ini terbilang mudah tapi mempunyai kelemahan; Semakin banyak file konfigurasi semakin sulit mengatur dalam satu tempat, bisa jadi akan tersebar dimana-mana.
Cara lain yaitu dengan menyimpan konfigurasi dalam env. Kita akan mempunyai sebuah file yang ter-ignore yang digunakan sebagai tempat untuk menyimpan konfigurasi. Saya lebih sering menggunakan cara hybrid. Menyimpan konfigurasi dalam satu file, lalu memanggil env tersebut dalam file konfigurasi yang dibutuhkan. File konfigurasi tersebut termasuk dalam bagian kode, akan tetapi file env harus di-ignore.
Kali ini saya belajar NodeJS.
Untuk NodeJS sendiri memiliki package dotenv. Dotenv merupakan modul yang digunakan untuk memuat variabel konfigurasi ke dalam sebuah project. Jika kita menggunakan dotenv, konfigurasi akan terpisah dengan kode. Hal ini sesuai dengan metodologi The Twelve-Factor App.
Berikut adalah langkah-langkah menggunakan dotenv dalam nodejs :
Install NVM dan NodeJS
Install dependensinya dulu ya … Ada story menarik tentang instalasi NVM dan NodeJS.
Install Express
Untuk kesederhanaan, saya hanya akan membuat project dengan Express.
mkdir nodejs_dotenv
cd nodejs_dotenv
npm init
npm install express --save
Buat entry point
Buat file index.js berisi http server sederhana :
const express = require('express')
const app = express()
const port = 3000app.get('/', (req, res) => res.send('My secret number is : '))app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Install Dotenv
npm install dotenv
Muat dotenv ke entry point
Tambahkan dotenv ke dalam index.js
require('dotenv').config()
Ignore .env
Buat file .gitignore
.env
node_modules
Menambahkan variabel konfigurasi
Buat file .env
MY_SECRET_NUMBER=123
Muat variabel ke dalam entry point
Kita akan coba muat variabel MY_SECRET_NUMBER
app.get('/', (req, res) => res.send('My secret number is ... ' + process.env.MY_SECRET_NUMBER))
Nyalakan server dan lihat hasilnya
node index.js
Output akan muncul seperti gambar di bawah ini :
Selesai! Mudah kan? Sekarang konfigurasi sudah terpisah dengan kode.
Bagi yang ingin melihat hasilnya bisa berkunjung ke repository ini.
Catatan : jika Anda menggunakan Adonis, tidak perlu menambahkan dotenv ke dalam project. Adonis sudah satu paket dengan dotenv.