Memisahkan konfigurasi dan kode dengan dotenv

Yunan Helmy
Extra Integer
Published in
2 min readApr 11, 2019
nodejs 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 = 3000
app.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 :

Output

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.

--

--