Bab 1: Pengenalan Live Reloading

Apa itu Live Reloading?

Live reloading adalah fitur yang memungkinkan lingkungan pengembangan Anda untuk memantau perubahan dalam kode Anda dan secara otomatis me-reload aplikasi Anda. Ketika Anda menyimpan sebuah file, alat live reload mendeteksi perubahan, membangun ulang aplikasi, dan me-restart-nya. Ini menghemat Anda dari proses manual menghentikan server, membangun ulang aplikasi, dan memulainya kembali setelah setiap perubahan.

Manfaat Live Reloading untuk Pengembangan Go

Live reloading dapat signifikan meningkatkan proses pengembangan. Bagi pengembang Go, yang biasanya harus mengkompilasi kode mereka sebelum menjalankannya, live reloading berarti alur kerja yang lebih baik dengan umpan balik yang langsung. Manfaatnya meliputi:

  1. Meningkatkan Produktivitas: Pengembang dapat tetap fokus tanpa gangguan, karena mereka tidak perlu melakukan pembangunan ulang manual.
  2. Menghemat Waktu: Live reloading mengurangi waktu putar untuk melihat perubahan kode yang tercermin dalam aplikasi yang sedang berjalan.
  3. Deteksi Kesalahan: Pembangunan ulang dan restart instan memungkinkan pengembang untuk mendeteksi dan memperbaiki kesalahan lebih cepat.
  4. Alur Kerja yang Tersusun: Terintegrasi dengan lancar ke dalam proses pengembangan, membuatnya lebih lancar dan efisien.

Bab 2: Apa itu Air?

Air adalah utilitas baris perintah yang dirancang untuk memberikan kemampuan live reloading untuk aplikasi Go. Ini memantau perubahan dalam kode sumber Anda dan secara otomatis membangun ulang dan me-restart aplikasi Go Anda. Ini berarti Anda dapat lebih fokus pada pengembangan fitur dan kurang pada tugas-tugas pengulangan.

Fitur

Air menyediakan beragam fitur yang cocok untuk lingkungan pengembangan Go modern:

  • Pembangunan Ulang Otomatis: Mendeteksi perubahan file dan memicu pembangunan ulang.
  • Perintah Pembangunan yang Dapat Disesuaikan: Memungkinkan Anda menyesuaikan perintah yang digunakan untuk membangun sesuai dengan kebutuhan proyek Anda.
  • Pengecualian Direktori: Memungkinkan Anda untuk menentukan direktori yang dikecualikan dari pemantauan.
  • Dukungan untuk Direktori Baru: Dapat memantau direktori baru yang ditambahkan setelah Air dijalankan.
  • Log yang Berwarna dan Mudah Dibaca: Meningkatkan kemudahan baca log output dengan penandaan warna.
  • Argumen CLI: Bidang konfigurasi dapat diatur langsung melalui argumen baris perintah untuk penyesuaian cepat.

Lihat konteks yang diberikan oleh pengembang untuk daftar lengkap fitur dan fungsionalitas yang tersedia dengan Air.

Bab 3: Memasang air

3.1 Pemasangan via go install

Untuk memasang Air menggunakan Go toolchain versi 1.18 atau lebih tinggi:

go install github.com/cosmtrek/air@latest

Ini akan membuat air tersedia di GOPATH/bin Anda.

3.2 Menggunakan Skrip install.sh

Metode lainnya adalah melalui skrip pemasangan yang disediakan:

curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin

Setelah dipasang, verifikasikan dengan menjalankan:

air -v

3.3 Pemasangan Khusus (Docker/Podman dan PATH Kustom)

Bagi yang menggunakan Docker atau Podman, terdapat cara yang lebih terpadu untuk menyertakan Air:

docker run -it --rm \
    -w "/path/to/project" \
    -v $(pwd):/path/to/project \
    -p port:port \
    cosmtrek/air

Ganti /path/to/project dengan jalur proyek Anda dan port:port dengan pemetaan port yang diinginkan.

Atau, untuk pemasangan PATH khusus:

curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/custom/path sh

Bab 4: Mengkonfigurasi air untuk Proyek Go Anda

4.1 Memahami Konfigurasi .air.toml

.air.toml adalah file konfigurasi untuk Air. Ini memungkinkan Anda untuk menentukan pengaturan terkait proses pembangunan, pemantauan direktori, dan output log. Berikut adalah gambaran singkat dari bagian-bagian kunci:

  • root: Menetapkan direktori kerja untuk Air.
  • build: Berisi pengaturan terkait pembangunan seperti perintah yang dijalankan sebelum/setelah membangun, dan perintah membangun utama.
  • tmp_dir: Direktori tempat file pembangunan sementara disimpan.
  • log: Mengkonfigurasi pengaturan file log.
  • color: Menyesuaikan warna dari setiap bagian output log.

4.2 Menghasilkan dan Memodifikasi Berkas Konfigurasi

Untuk menghasilkan berkas konfigurasi default .air.toml, jalankan:

air init

Ini akan membuat berkas .air.toml dengan pengaturan default di direktori saat ini. Anda kemudian dapat memodifikasinya untuk sesuaikan dengan kebutuhan proyek Anda. Sebagai referensi, Anda dapat melihat air_example.toml yang disediakan dalam konteks.

4.3 Menimpa Konfigurasi dengan Argumen CLI

Untuk pengujian cepat atau perubahan kecil, Anda dapat menimpa konfigurasi dalam .air.toml dengan melewatkan argumen CLI. Sebagai contoh:

air --build.cmd "go build -o myapp" --build.bin "./myapp"

Fleksibilitas ini memungkinkan Anda untuk dengan mudah menyesuaikan perilaku Air tanpa mengubah berkas konfigurasi.

Bab 5: Menjalankan air di Lingkungan Pengembangan Anda

5.1 Memulai air di Proyek Anda

Untuk memulai dengan air dalam proyek Anda, navigasikan ke direktori root proyek Anda dalam terminal dan jalankan perintah air. Jika berkas konfigurasi .air.toml ada, air akan secara otomatis menggunakannya. Jika tidak, akan menggunakan pengaturan default.

cd /path/ke/proyek_anda
air

Tips: Jika Anda mengalami masalah izin dengan executable air, pastikan bahwa ia memiliki izin eksekusi yang diperlukan (chmod +x $(go env GOPATH)/bin/air).

5.2 Menyesuaikan Perintah Build dan Run dengan air

Anda dapat menyesuaikan perintah build dan run yang digunakan oleh air dengan memodifikasi berkas konfigurasi .air.toml, khususnya di bagian [build]. Sebagai contoh, untuk mengubah perintah build dan menentukan berkas biner yang berbeda:

[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"

Untuk kebutuhan build yang lebih kompleks, array pre_cmd dan post_cmd dalam berkas konfigurasi memungkinkan Anda untuk menjalankan perintah sebelum dan setelah proses build, masing-masing.

Tips: Contoh lengkap konfigurasi air

5.3 Mengesampingkan Direktori dan Memantau Perubahan

air juga memungkinkan Anda untuk mengesampingkan direktori dari pemantauan perubahan, yang berguna untuk direktori yang berisi aset atau dependensi yang tidak perlu memicu pembangunan ulang.

Untuk mengkonfigurasi ini, perbarui bidang exclude_dir di .air.toml:

[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]

Anda juga dapat memerintahkan air untuk memasukkan direktori tambahan dengan include_dir, atau memantau ekstensi berkas tertentu dengan include_ext.

Bab 6: Penggunaan Lanjutan

6.1 Menyiapkan air dengan Kontainer Docker

Menggunakan air dalam kontainer Docker dapat menyederhanakan pengaturan pengembangan Anda, terutama saat bekerja dengan tim. Untuk menyertakan air dalam lingkungan Docker Anda, perbarui Dockerfile Anda untuk menginstal air dan menyalin .air.toml Anda ke dalam kontainer:

FROM golang:1.18-alpine AS builder

RUN go install github.com/cosmtrek/air@latest

WORKDIR /app

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

CMD ["air", "-c", ".air.toml"]

6.3 Menggunakan air dalam Lingkungan Docker-compose

Untuk mengintegrasikan air ke dalam layanan yang dikelola oleh docker-compose, tentukan layanan dalam berkas docker-compose.yaml Anda:

version: '3.8'
services:
  app:
    build: .
    ports:
      - "808:808"
    volumes:
      - .:/app
    command: ["air", "-c", ".air.toml"]

Pastikan bahwa direktif volumes secara benar memetakan direktori proyek Anda ke direktori kerja dalam kontainer agar air dapat mendeteksi perubahan berkas.

Bab 7: Troubleshooting Umum dan FAQ

7.1 Memperbaiki Kesalahan command not found: air

Jika Anda mengalami kesalahan command not found: air, biasanya itu berarti bahwa binary air tidak ada di PATH sistem Anda. Untuk mengatasi ini, tambahkan jalur biner Go ke variabel lingkungan PATH Anda:

export PATH=$PATH:$(go env GOPATH)/bin

7.2 Masalah dalam Lingkungan WSL

Dalam lingkungan Windows Subsystem for Linux (WSL), pastikan bahwa Anda mengeksploitasi karakter-karakter khusus dalam file .air.toml. Sebagai contoh, gunakan \\ untuk menghindari backslash dalam jalur file.

7.3 Tips Kompilasi Cepat Tanpa Menjalankan Berkas Binari

Jika Anda ingin air mengkompilasi aplikasi Go Anda tanpa menjalankannya, atur cmd di bagian [build] dari file .air.toml Anda ke perintah tanpa operasi (seperti /bin/true pada sistem berbasis Unix):

[build]
cmd = "/bin/true"

Dengan melakukan ini, air masih akan mengamati perubahan file dan memicu proses kompilasi, tetapi tidak akan mencoba menjalankan berkas biner yang dihasilkan.