Chương 1: Giới thiệu về Live Reloading
Live Reloading là gì?
Live reloading là một tính năng cho phép môi trường phát triển của bạn theo dõi sự thay đổi trong mã nguồn của bạn và tự động tải lại ứng dụng của bạn. Khi bạn lưu một tệp, công cụ live reload sẽ phát hiện sự thay đổi, xây dựng lại ứng dụng và khởi động lại nó. Điều này giúp bạn tránh được quá trình thủ công của việc dừng máy chủ, xây dựng lại ứng dụng và khởi động lại nó sau mỗi sự thay đổi.
Lợi ích của Live Reloading cho phát triển Go
Live reloading có thể tăng đáng kể tốc độ phát triển. Đối với các nhà phát triển Go, người ta đã quen với việc biên dịch mã nguồn trước khi chạy nó, live reloading có nghĩa là quy trình làm việc cải thiện với phản hồi ngay lập tức. Các lợi ích bao gồm:
- Tăng năng suất: Nhà phát triển có thể duy trì trong vùng mà không bị gián đoạn, vì họ không cần thực hiện việc xây dựng lại thủ công.
- Tiết kiệm thời gian: Live reloading giảm thời gian đáp ứng để thấy các thay đổi mã được phản ánh trong ứng dụng đang chạy.
- Phát hiện lỗi: Xây dựng và khởi động lại ngay lập tức cho phép nhà phát triển phát hiện và sửa lỗi nhanh hơn.
- Quy trình làm việc hiệu quả: Tích hợp trơn tru vào quy trình phát triển, làm cho nó mượt mà và hiệu quả hơn.
Chương 2: Air là gì?
Air là một tiện ích dòng lệnh được thiết kế để cung cấp khả năng live reloading cho các ứng dụng Go. Nó theo dõi sự thay đổi trong mã nguồn của bạn và tự động xây dựng lại và khởi động lại ứng dụng Go của bạn. Điều này có nghĩa là bạn có thể tập trung hơn vào việc phát triển tính năng và ít hơn vào các công việc lặp đi lặp lại.
Các tính năng
Air cung cấp một loạt các tính năng phù hợp cho môi trường phát triển Go hiện đại:
- Xây dựng tự động: Phát hiện sự thay đổi tệp và kích hoạt xây dựng lại.
- Lệnh Xây dựng có thể Tùy chỉnh: Cho phép bạn tùy chỉnh các lệnh xây dựng theo nhu cầu dự án của bạn.
- Loại Trừ Thư mục: Cho phép bạn chỉ định các thư mục cần loại trừ khỏi quá trình theo dõi.
- Hỗ trợ cho Thư mục Mới: Có thể theo dõi các thư mục mới được thêm sau khi Air đã được khởi động.
- Bảng Ghi Màu sắc và Dễ đọc: Nâng cao tính đọc hiểu của bảng ghi đầu ra với mã màu.
- Đối số CLI: Các trường cấu hình có thể được thiết lập trực tiếp thông qua đối số dòng lệnh để điều chỉnh nhanh chóng.
Vui lòng tham khảo văn bản được cung cấp bởi nhà phát triển để biết danh sách đầy đủ các tính năng và chức năng có sẵn với Air.
Chương 3: Cài đặt air
3.1 Cài đặt qua go install
Để cài đặt Air bằng cách sử dụng công cụ Go phiên bản 1.18 trở lên:
go install github.com/cosmtrek/air@latest
Điều này sẽ làm cho air
sẵn có trong GOPATH/bin
của bạn.
3.2 Sử dụng tập lệnh install.sh
Một phương pháp khác là thông qua tập lệnh cài đặt được cung cấp:
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
Sau khi cài đặt, hãy xác minh nó bằng cách chạy:
air -v
3.3 Cài đặt Đặc biệt (Docker/Podman và Đường dẫn Tùy chỉnh)
Đối với những người sử dụng Docker hoặc Podman, có một cách tiết kiệm thời gian để bao gồm Air:
docker run -it --rm \
-w "/đường/dẫn/đến/dự/án" \
-v $(pwd):/đường/dẫn/đến/dự/án \
-p port:port \
cosmtrek/air
Thay thế /đường/dẫn/đến/dự/án
bằng đường dẫn dự án của bạn và port:port
bằng ánh xạ cổng mong muốn.
Hoặc, đối với cài đặt đường dẫn cụ thể:
curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/đường/dẫn/tùy/chọn sh
Chương 4: Cấu hình air
cho Dự án Go của bạn
4.1 Hiểu về Cấu hình .air.toml
.air.toml
là tệp cấu hình cho Air. Nó cho phép bạn chỉ định các thiết lập liên quan đến quy trình xây dựng, theo dõi thư mục và đầu ra bảng ghi. Đây là một tổng quan ngắn gọn về các phần chính:
-
root
: Đặt thư mục làm việc cho Air. -
build
: Chứa các thiết lập liên quan đến xây dựng như các lệnh chạy trước/sau khi xây dựng, và lệnh xây dựng chính. -
tmp_dir
: Thư mục nơi các tệp xây dựng tạm thời được lưu trữ. -
log
: Cấu hình các thiết lập tệp bảng ghi. -
color
: Tùy chỉnh màu sắc của từng phần của đầu ra bảng ghi.
4.2 Tạo và Sửa Đổi Tệp Cấu Hình
Để tạo tệp cấu hình mặc định .air.toml
, hãy chạy lệnh:
air init
Điều này sẽ tạo một tệp .air.toml
với các thiết lập mặc định trong thư mục hiện tại của bạn. Bạn có thể sửa đổi nó để phù hợp với yêu cầu dự án của mình. Để tham khảo, bạn có thể xem air_example.toml
được cung cấp trong ngữ cảnh.
4.3 Ghi Đè Cấu Hình với Đối Số CLI
Đối với các bài kiểm tra nhanh hoặc các thay đổi nhỏ, bạn có thể ghi đè cấu hình trong .air.toml
bằng cách truyền các đối số CLI. Ví dụ:
air --build.cmd "go build -o myapp" --build.bin "./myapp"
Sự linh hoạt này cho phép bạn dễ dàng tùy chỉnh hành vi của Air mà không cần thay đổi tệp cấu hình.
Chương 5: Chạy air
trong Môi Trường Phát Triển Của Bạn
6.1 Bắt Đầu air
trong Dự Án Của Bạn
Để bắt đầu với air
trong dự án của bạn, hãy di chuyển đến thư mục gốc của dự án trong cửa sổ terminal của bạn và thực thi lệnh air
. Nếu có tệp cấu hình .air.toml
, air
sẽ tự động sử dụng nó. Nếu không, nó sẽ sử dụng các thiết lập mặc định.
cd /đường/dẫn/đến/dự_án_của_bạn
air
Mẹo: Nếu bạn gặp vấn đề về quyền với tệp thực thi air
, đảm bảo rằng nó có đủ quyền thực thi cần thiết (chmod +x $(go env GOPATH)/bin/air
).
6.2 Tùy Chỉnh Lệnh Xây Dựng và Chạy với air
Bạn có thể tùy chỉnh các lệnh xây dựng và chạy được sử dụng bởi air
bằng cách sửa đổi tệp cấu hình .air.toml
, cụ thể là trong phần [build]
. Ví dụ, để thay đổi lệnh xây dựng và chỉ định một tệp nhị phân khác:
[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"
Đối với yêu cầu xây dựng phức tạp hơn, các mảng pre_cmd
và post_cmd
trong tệp cấu hình cho phép bạn thực thi các lệnh trước và sau quá trình xây dựng, tương ứng.
6.3 Loại Bỏ Thư Mục và Theo Dõi Các Thay Đổi
air
cũng cho phép bạn loại bỏ các thư mục không cần theo dõi thay đổi, điều này có thể hữu ích cho các thư mục chứa tài sản hoặc phụ thuộc mà không cần kích hoạt quá trình xây dựng lại.
Để cấu hình điều này, cập nhật trường exclude_dir
trong .air.toml
:
[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]
Bạn cũng có thể chỉ định thêm thư mục sử dụng include_dir
, hoặc theo dõi các phần mở rộng tệp cụ thể bằng include_ext
.
Chương 6: Sử Dụng Nâng Cao
6.1 Thiết Lập air
với Docker Containers
Sử dụng air
trong một container Docker có thể tối ưu hóa thiết lập phát triển của bạn, đặc biệt khi làm việc với các nhóm. Để bao gồm air
trong môi trường Docker của bạn, cập nhật Dockerfile
của bạn để cài đặt air
và sao chép tệp .air.toml
vào container của bạn:
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 Sử Dụng air
trong Môi Trường Docker-compose
Để tích hợp air
vào dịch vụ được quản lý bởi docker-compose
, xác định một dịch vụ trong tệp docker-compose.yaml
của bạn:
version: '3.8'
services:
app:
build: .
ports:
- "808:808"
volumes:
- .:/app
command: ["air", "-c", ".air.toml"]
Đảm bảo rằng chỉ thị volumes
ánh xạ đúng thư mục dự án của bạn vào thư mục làm việc trong container để air
có thể phát hiện được sự thay đổi tệp.
Chương 7: Sửa Lỗi Thông Thường và FAQs
7.1 Sửa Lỗi command not found: air
Nếu bạn gặp phải lỗi command not found: air
, thì thông thường điều này có nghĩa là tệp nhị phân air
không nằm trong PATH
của hệ thống của bạn. Để khắc phục điều này, hãy thêm đường dẫn tệp nhị phân Go vào biến môi trường PATH
của bạn:
export PATH=$PATH:$(go env GOPATH)/bin
7.2 Vấn đề trong môi trường WSL
Trong môi trường Windows Subsystem for Linux (WSL), hãy đảm bảo rằng bạn đang escape các ký tự đặc biệt trong tệp .air.toml
. Ví dụ, sử dụng \\
để escape các dấu gạch chéo ngược trong đường dẫn tệp.
7.3 Mẹo về Biên dịch Nhanh mà Không Chạy Tệp Nhị Phân
Nếu bạn muốn air
biên dịch ứng dụng Go của bạn mà không chạy nó, hãy đặt cmd
trong phần [build]
của tệp .air.toml
của bạn thành một lệnh no-operation (như /bin/true
trên hệ thống dựa trên Unix):
[build]
cmd = "/bin/true"
Bằng cách làm này, air
vẫn sẽ quan sát sự thay đổi tệp và kích hoạt quá trình biên dịch, nhưng nó sẽ không thử thực thi tệp nhị phân kết quả.