Sejauh ini setiap kali kita ubah kode, kita harus stop server (Ctrl+C) lalu jalankan lagi go run main.go secara manual. Ini cukup mengganggu ritme development. Di part ini kita pasang Air, tool hot reload untuk Go yang otomatis rebuild dan restart server setiap ada perubahan file.
Instalasi Air
Air diinstall sebagai tool global (bukan dependency project), lewat go install:
go install github.com/air-verse/air@latest
Pastikan $GOPATH/bin (biasanya ~/go/bin) sudah ada di PATH, supaya command air bisa dipanggil langsung dari terminal. Cek instalasinya:
air -v
Konfigurasi Air
Generate file konfigurasi default di root project:
air init
Perintah ini membuat file .air.toml yang isinya kurang lebih:
root = "."
tmp_dir = "tmp"
[build]
bin = "./tmp/main"
cmd = "go build -o ./tmp/main ."
delay = 1000
exclude_dir = ["assets", "tmp", "vendor", "testdata"]
exclude_regex = ["_test.go"]
include_ext = ["go", "tpl", "tmpl", "html"]
log = "build-errors.log"
Konfigurasi default ini sudah cukup untuk kebutuhan kita: Air akan memantau semua file .go di project, build ke folder tmp/, lalu menjalankan binary hasil build tersebut. Setiap ada file yang berubah, proses build-run diulang otomatis.
Tambahkan tmp/ dan build-errors.log ke .gitignore supaya hasil build sementara tidak ikut ter-commit:
/tmp
build-errors.log
Menjalankan Server dengan Air
Ganti go run main.go dengan:
air
Output-nya mirip menjalankan server biasa, ditambah daftar folder yang di-watch:
watching .
watching handlers
watching models
watching routes
watching validation
building...
running...
┌───────────────────────────────────────────────────┐
│ Fiber v2.52.15 │
│ http://127.0.0.1:3000 │
└───────────────────────────────────────────────────┘
Testing Hot Reload
Coba ubah salah satu file .go, misalnya tambahkan komentar di main.go, lalu simpan. Tanpa perlu restart manual, terminal akan menampilkan:
main.go has changed
building...
running...
Server otomatis rebuild dan restart dengan perubahan terbaru. Ini akan sangat membantu produktivitas mulai dari part berikutnya, terutama saat kita mulai membangun fitur JWT authentication yang butuh banyak percobaan bolak-balik.
Bagian dari Series: GoFiber Dasar - Belajar Fundamental Lewat REST API Blog
Belajar konsep-konsep dasar GoFiber (routing, handler, GORM, MySQL, JWT auth) dengan membangun REST API blog sederhana dari nol - lengkap dengan auten...
Lihat Series Lengkap