Bang ada gak sih alternative nodemon seperti di Nodejs tapi di pemrograman Go? Jawabannya ada, live-reload/hot reload yang saya gunakan di Go adalah Air.
Pembuat tools ini bernama Rick Yu dengan motivasi yaitu saat mengembangkan aplikasi dengan kerangka kerja Go dan Gin sayang sekali framework tersebut tidak memiliki fungsi live-reloading. Nah, pada artikerl ini anda akan mempelajari cara membuat live-reload pada Go sesuai dengan pengalaman saya.
Menginstal Air
Untuk menginstallnya silahkan buka disini atau ikuti cara yang saya pake yaitu menggunakan go install seperti di bawah ini.
go install github.com/cosmtrek/air@latest
Menyiapkan Project
Buat direktori baru dan file main.go di dalamnya dengan isi berikut:
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
Pada directory project jalankan perintah berikut untuk menghasilkan file konfigurasi .air.toml
:
air init
Anda akan melihan output seperti ini saat menghasilkan file .air.toml:
__ _ ___
/ /\ | | | |_)
/_/--\ |_| |_| \_ , built with Go
mkdir /home/ryanbekhen/projects/hello-world/tmp
watching .
!exclude tmp
building...
running...
Konfigurasi Air
Saat anda ingin mengubah konfigurasi air, kita dapat mengubahnya di file .air.toml. Berikut adalah contoh isi dari file konfigurasinya:
root = "."
testdata_dir = "testdata"
tmp_dir = "tmp"
[build]
args_bin = []
bin = "./tmp/main"
cmd = "go build -o ./tmp/main ."
delay = 1000
exclude_dir = ["assets", "tmp", "vendor", "testdata"]
exclude_file = []
exclude_regex = ["_test.go"]
exclude_unchanged = false
follow_symlink = false
full_bin = ""
include_dir = []
include_ext = ["go", "tpl", "tmpl", "html"]
kill_delay = "0s"
log = "build-errors.log"
send_interrupt = false
stop_on_error = true
[color]
app = ""
build = "yellow"
main = "magenta"
runner = "green"
watcher = "cyan"
[log]
time = false
[misc]
clean_on_exit = false
[screen]
clear_on_rebuild = false
Nah, kalau dari konfigurasi di atas seharusnya sudah sangat jelas apa saya yang bisa kita terapkan di air. Sebagai contoh, biasanya saya ingin setiap saya berhenti ngoding atau berhenti menjalankan programnya air secara otomatis menghapus directory tmp nya. Saya menggunakan mengubah konfigurasinya seperti berikut:
[misc]
clean_on_exit = true
Dengan ini setiap kita berhenti menjalankan programnya secari otomatis air menghapus direktori tmp.
Semoga dengan sedikit pengalaman yang saya bagikan di atas bisa membantu anda sehari-hari dalam mengembangkan aplikasi Go anda, dan jangan lupa di share yah!! Terima kasih.