الإنجليزية | 简体中文 | 繁體中文
عندما بدأت تطوير مواقع الويب في Go واستخدام إطار عمل gin، كان من المؤسف أن gin كان يفتقر إلى وظيفة إعادة التحميل المباشر. لذلك بحثت وجربت جديدًا، ويبدو أنه ليس مرنًا كثيرًا، لذلك كنت أنوي إعادة كتابته بشكل أفضل. وأخيرا، ولد الهواء. بالإضافة إلى ذلك، شكرًا جزيلاً لبيلو، لا يوجد هواء نقي ولا هواء :)
يعد Air أداة مساعدة أخرى لسطر الأوامر لإعادة التحميل المباشر لتطوير تطبيقات Go. قم بتشغيل air
في الدليل الجذر لمشروعك، واتركه بمفرده، وركز على الكود الخاص بك.
ملاحظة: لا علاقة لهذه الأداة بالنشر السريع للإنتاج.
دعم حقول تكوين الهواء كوسائط:
إذا كنت تريد تكوين أمر البناء وأمر التشغيل، فيمكنك استخدام الأمر التالي بدون ملف التكوين:
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
(مستحسن)مع الذهاب 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 cosmtrek/air.
docker/podman run -it --rm
-w " <PROJECT> "
-e " air_wd=<PROJECT> "
-v $( pwd ) : < PROJECT >
-p < PORT > : < APP SERVER PORT >
cosmtrek/air
-c < CONF >
إذا كنت تريد استخدام الهواء بشكل مستمر مثل التطبيق العادي، فيمكنك إنشاء وظيفة في ${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
تقديم شكر كبير للكثير من المؤيدين. لقد كنت دائما أتذكر لطفك.
رخصة جنو العامة v3.0