อังกฤษ | 简体中文 | 繁體中文
เมื่อฉันเริ่มพัฒนาเว็บไซต์ใน Go และใช้เฟรมเวิร์ก gin เป็นเรื่องน่าเสียดายที่ gin ขาดฟังก์ชันการโหลดซ้ำแบบเรียลไทม์ ดังนั้นฉันจึงค้นหาไปรอบ ๆ และลองใหม่ ดูเหมือนว่าจะไม่ยืดหยุ่นมากนัก ดังนั้นฉันจึงตั้งใจจะเขียนมันใหม่ให้ดีขึ้น ในที่สุดแอร์ก็เกิด นอกจากนี้ต้องขอบคุณ pilu มาก ไม่สด ไม่มีอากาศ :)
Air เป็นอีกหนึ่งโปรแกรมอรรถประโยชน์บรรทัดคำสั่งแบบรีโหลดสดสำหรับการพัฒนาแอปพลิเคชัน Go รัน air
ในไดเร็กทอรีรากของโปรเจ็กต์ ปล่อยไว้เฉยๆ และมุ่งเน้นไปที่โค้ดของคุณ
หมายเหตุ: เครื่องมือนี้ไม่เกี่ยวข้องกับการปรับใช้แบบ hot-deploy สำหรับการผลิต
รองรับฟิลด์การกำหนดค่าอากาศเป็นอาร์กิวเมนต์:
หากคุณต้องการกำหนดค่าคำสั่ง build และเรียกใช้คำสั่ง คุณสามารถใช้เหมือนคำสั่งต่อไปนี้โดยไม่ต้องใช้ไฟล์กำหนดค่า:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api "
ใช้เครื่องหมายจุลภาคเพื่อคั่นรายการสำหรับอาร์กิวเมนต์ที่รับรายการเป็นอินพุต:
air --build.cmd " go build -o bin/api cmd/run.go " --build.bin " ./bin/api " --build.exclude_dir " templates,build "
go install
(แนะนำ)ด้วย go 1.23 หรือสูงกว่า:
go install github.com/air-verse/air@latest
# binary will be $(go env GOPATH)/bin/air
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s -- -b $( go env GOPATH ) /bin
# or install it into ./bin/
curl -sSfL https://raw.githubusercontent.com/air-verse/air/master/install.sh | sh -s
air -v
# binary will be /usr/local/bin/air
curl -sSfL https://goblin.run/github.com/air-verse/air | sh
# to put to a custom path
curl -sSfL https://goblin.run/github.com/air-verse/air | PREFIX=/tmp sh
กรุณาดึงอิมเมจ Docker นี้ commtrek/air
docker/podman run -it --rm
-w " <PROJECT> "
-e " air_wd=<PROJECT> "
-v $( pwd ) : < PROJECT >
-p < PORT > : < APP SERVER PORT >
cosmtrek/air
-c < CONF >
หากคุณต้องการใช้ air อย่างต่อเนื่องเหมือนกับแอปทั่วไป คุณสามารถสร้างฟังก์ชันใน ${SHELL}rc ของคุณ (Bash, Zsh, ฯลฯ...)
air () {
podman/docker run -it --rm
-w " $PWD " -v " $PWD " : " $PWD "
-p " $AIR_PORT " : " $AIR_PORT "
docker.io/cosmtrek/air " $@ "
}
<PROJECT>
คือเส้นทางโครงการของคุณในคอนเทนเนอร์ เช่น /go/example หากคุณต้องการเข้าสู่คอนเทนเนอร์ โปรดเพิ่ม --entrypoint=bash
หนึ่งในโครงการของฉันทำงานใน Docker:
docker run -it --rm
-w " /go/src/github.com/cosmtrek/hub "
-v $( pwd ) :/go/src/github.com/cosmtrek/hub
-p 9090:9090
cosmtrek/air
อีกตัวอย่างหนึ่ง:
cd /go/src/github.com/cosmtrek/hub
AIR_PORT=8080 air -c " config.toml "
สิ่งนี้จะแทนที่ $PWD
ด้วยไดเร็กทอรีปัจจุบัน $AIR_PORT
คือพอร์ตที่จะเผยแพร่และ $@
คือการยอมรับอาร์กิวเมนต์ของแอปพลิเคชันเอง เช่น -c
หากต้องการพิมพ์น้อยลง คุณสามารถเพิ่ม alias air='~/.air'
ลงใน .bashrc
หรือ .zshrc
ได้
ขั้นแรกให้เข้าสู่โครงการของคุณ
cd /path/to/your_project
การใช้งานที่ง่ายที่สุดคือการรัน
# firstly find `.air.toml` in current directory, if not found, use defaults
air -c .air.toml
คุณสามารถเตรียมใช้งานไฟล์การกำหนดค่า .air.toml
ไปยังไดเร็กทอรีปัจจุบันด้วยการตั้งค่าเริ่มต้นที่รันคำสั่งต่อไปนี้
air init
หลังจากนี้ คุณสามารถรันคำสั่ง air
ได้โดยไม่ต้องมีข้อโต้แย้งเพิ่มเติม และคำสั่งจะใช้ไฟล์ .air.toml
ในการกำหนดค่า
air
สำหรับการแก้ไขการกำหนดค่า โปรดดูที่ไฟล์ air_example.toml
คุณสามารถส่งผ่านอาร์กิวเมนต์สำหรับการรันไบนารี่ที่สร้างขึ้นโดยการเพิ่มอาร์กิวเมนต์หลังคำสั่ง air
# Will run ./tmp/main bench
air bench
# Will run ./tmp/main server --port 8080
air server --port 8080
คุณสามารถแยกอาร์กิวเมนต์ที่ส่งผ่านสำหรับคำสั่ง air และไบนารี่ที่สร้างขึ้นด้วย --
อาร์กิวเมนต์
# Will run ./tmp/main -h
air -- -h
# Will run air with custom config and pass -h argument to the built binary
air -c .air.toml -- -h
services :
my-project-with-air :
image : cosmtrek/air
# working_dir value has to be the same of mapped volume
working_dir : /project-package
ports :
- <any>:<any>
environment :
- ENV_A=${ENV_A}
- ENV_B=${ENV_B}
- ENV_C=${ENV_C}
volumes :
- ./project-relative-path/:/project-package/
air -d
พิมพ์บันทึกทั้งหมด
Dockerfile
# Choose whatever you want, version >= 1.16
FROM golang:1.23-alpine
WORKDIR /app
RUN go install github.com/air-verse/air@latest
COPY go.mod go.sum ./
RUN go mod download
CMD [ "air" , "-c" , ".air.toml" ]
docker-compose.yaml
version : " 3.8 "
services :
web :
build :
context : .
# Correct the path to your Dockerfile
dockerfile : Dockerfile
ports :
- 8080:3000
# Important to bind/mount your codebase dir to /app dir for live reload
volumes :
- ./:/app
export GOPATH= $HOME /xxxxx
export PATH= $PATH : $GOROOT /bin: $GOPATH /bin
export PATH= $PATH : $( go env GOPATH ) /bin # Confirm this line in your .profile and make sure to source the .profile if you add it!!!
ควรใช้ เพื่อหนี `' ที่อยู่ในถังขยะ ปัญหาที่เกี่ยวข้อง: #305
#365
[ build ]
cmd = " /usr/bin/true "
อ้างถึงฉบับ #512 สำหรับรายละเอียดเพิ่มเติม
include_dir
, include_ext
หรือ include_file
</body>
[ proxy ]
enabled = true
proxy_port = < air proxy port>
app_port = < your server port>
โปรดทราบว่าต้องใช้ Go 1.16+ เนื่องจากฉันใช้ go mod
เพื่อจัดการการขึ้นต่อกัน
# Fork this project
# Clone it
mkdir -p $GOPATH /src/github.com/cosmtrek
cd $GOPATH /src/github.com/cosmtrek
git clone [email protected]: < YOUR USERNAME > /air.git
# Install dependencies
cd air
make ci
# Explore it and happy hacking!
make install
ยินดีต้อนรับคำขอดึง
# Checkout to master
git checkout master
# Add the version that needs to be released
git tag v1.xx.x
# Push to remote
git push origin v1.xx.x
# The CI will process and release a new version. Wait about 5 min, and you can fetch the latest version
ขอขอบคุณผู้สนับสนุนจำนวนมาก ฉันระลึกถึงความมีน้ำใจของคุณเสมอ
ใบอนุญาตสาธารณะทั่วไปของ GNU v3.0