فصل ۱: مقدمهای بر Live Reloading
Live Reloading چیست؟
Live Reloading ویژگیای است که به محیط توسعهی شما اجازه میدهد تا تغییرات در کدتان را نظارت کند و برنامهی شما را بهصورت خودکار مجدداً بارگذاری کند. زمانی که یک فایل را ذخیره میکنید، ابزار live reload تغییر را تشخیص میدهد، برنامه را مجدداً ساخته و آن را مجدداً راهاندازی میکند. این کار شما را از فرایند دستی توقف سرور، بازسازی برنامه و مجدداً راهاندازی آن بعد از هر تغییر نجات میدهد.
مزایای Live Reloading برای توسعه Go
Live Reloading میتواند پروسهی توسعه را بهطور قابلتوجهی سریعتر کند. برای توسعهدهندگان Go که به کامپایل کردن کدشان قبل از اجرا عادت دارند، live reloading به معنی یک جریان کاری بهبود یافته با بازخورد فوری است. مزایا عبارتند از:
-
افزایش بهرهوری: توسعهدهندگان میتوانند بدون وقفه در حالت
the zone
باقی بمانند، زیرا نیازی به اجرای مجدد دستی ندارند. - صرفهجویی در زمان: Live Reloading زمان برای مشاهده تغییرات کد در برنامه در حال اجرا را کاهش میدهد.
- شناسایی خطا: بازسازی و راهاندازی فوری به توسعهدهندگان اجازه میدهد تا خطاها را سریعتر شناسایی و اصلاح کنند.
- جریانکاری بهینهشده: بهطور یکپارچه وارد فرایند توسعه میشود و آن را نرم و کارآمدتر میکند.
فصل ۲: چیست Air؟
Air یک ابزار خطفرمانی است که برای ارائه قابلیت live reloading برای برنامههای Go طراحی شده است. این ابزار تغییرات در کد منبع شما را نظارت کرده و بهصورت خودکار برنامهی Go شما را مجدداً ساخته و راهاندازی میکند. این بدان معناست که میتوانید بیشتر بر روی توسعه ویژگیها تمرکز کرده و کمتر به کارهای تکراری اهمیت بدهید.
ویژگیها
Air مجموعهای از ویژگیهای مناسب برای یک محیط توسعهی Go مدرن ارائه میدهد:
- ساختهای خودکار: تغییرات فایل را تشخیص داده و ساختها را فعال میکند.
- فرمانهای ساخت سفارشی: به شما امکان میدهد که فرمانهای ساخت را برای نیازهای پروژه خود سفارشیسازی نمایید.
- محدودههای دایرکتوری: به شما امکان میدهد دایرکتوریهایی را که میخواهید نظارت نشود مشخص نمایید.
- پشتیبانی از دایرکتوریهای جدید: میتواند دایرکتوریهای جدید اضافهشده پس از اجرای Air را نظارت نماید.
- گزینههای خط فرمان CLI: فیلدهای پیکربندی را میتوانید مستقیماً از طریق آرگومانهای خط فرمان ست کرده و بهسرعت تنظیمات را تغییر دهید.
برای مطالعهی متن ارائه شده توسط توسعهدهنده، به منظور مشاهدهی فهرست کامل از ویژگیها و قابلیتهای موجود در Air مراجعه نمایید.
فصل ۳: نصب air
3.1 نصب از طریق go install
برای نصب Air با استفاده از ابزار Go با نسخه 1.18 یا بالاتر:
go install github.com/cosmtrek/air@latest
این کار air
را در GOPATH/bin
شما قابل دسترس میکند.
3.2 استفاده از اسکریپت install.sh
روش دیگر از طریق اسکریپت نصب ارائه شده است:
curl -sSfL https://raw.githubusercontent.com/cosmtrek/air/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
پس از نصب، آن را با اجرای دستور زیر تأیید نمایید:
air -v
3.3 نصبهای ویژه (Docker/Podman و PATH سفارشی)
برای کسانی که از Docker یا Podman استفاده میکنند، روشی بهینه برای شامل کردن Air وجود دارد:
docker run -it --rm \
-w "/path/to/project" \
-v $(pwd):/path/to/project \
-p port:port \
cosmtrek/air
مسیر /path/to/project
را با مسیر پروژهی خود و port:port
را با نگاشت پورت مورد نظر جایگزین نمایید.
بهعلاوه، برای یک نصب با PATH خاص:
curl -sSfL https://goblin.run/github.com/cosmtrek/air | PREFIX=/custom/path sh
فصل ۴: پیکربندی air
برای پروژهی Go شما
4.1 درک پیکربندی .air.toml
.air.toml
فایل پیکربندی Air است. این اجازه را به شما میدهد تا تنظیمات مربوط به فرآیند ساخت، نظارت دایرکتوری و خروجی لاگ را مشخص نمایید. در زیر یک بررسی مختصر از بخشهای کلیدی آمده است:
-
root
: دایرکتوری کاری برای Air را تنظیم میکند. -
build
: شامل تنظیمات مرتبط با ساخت مانند فرمانهای اجرا شده قبل/بعد از ساخت و فرمان ساخت اصلی. -
tmp_dir
: دایرکتوریای که فایلهای موقت ساخت در آن ذخیره میشوند. -
log
: تنظیمات فایل لاگ را پیکربندی میکند. -
color
: رنگبندی سفارشی بخشهای مختلف خروجی لاگ را مشخص میکند.
4.2 تولید و تغییر فایل پیکربندی
برای تولید یک فایل پیکربندی پیشفرض به نام .air.toml
، دستور زیر را وارد کنید:
air init
این دستور یک فایل .air.toml
با تنظیمات پیشفرض در دایرکتوری فعلی شما ایجاد میکند. سپس شما میتوانید آن را تغییر دهید تا به نیازهای پروژهی خود بخورد. به عنوان مرجع، میتوانید به air_example.toml
که در متن داده شده است مراجعه کنید.
4.3 دوگانگی پیکربندی با آرگومانهای خط فرمان
برای تستهای سریع یا تغییرات کوچک، میتوانید پیکربندی در فایل .air.toml
را با انتقال آرگومانهای خط فرمان دوگانه (CLI) بازنویسی کنید. به عنوان مثال:
air --build.cmd "go build -o myapp" --build.bin "./myapp"
این امکان شما را قادر میسازد تا به راحتی رفتار Air را بدون تغییر فایل پیکربندی سفارشی کنید.
فصل 5: اجرای air
در محیط توسعه شما
5.1 شروع air
در پروژه شما
برای شروع با air
در پروژهی خود، به دایرکتوری اصلی پروژهی خود در ترمینال بروید و دستور air
را اجرا کنید. در صورتی که یک فایل پیکربندی .air.toml
وجود داشته باشد، air
به طور خودکار آن را استفاده میکند. در غیر این صورت، از تنظیمات پیشفرض استفاده خواهد کرد.
cd /path/to/your_project
air
نکته: اگر با مشکلات دسترسی به فایل قابل اجرای air
روبهرو میشوید، اطمینان حاصل کنید که اجازهی اجرا را دارد (chmod +x $(go env GOPATH)/bin/air
).
5.2 سفارشیکردن دستورات بیلد و ران با air
شما میتوانید دستورات بیلد و ران استفاده شده توسط air
را با تغییر فایل پیکربندی .air.toml
، به طور ویژه تحت بخش [build]
سفارشیکنید. به عنوان مثال، برای تغییر دستور بیلد و مشخص کردن یک فایل باینری متفاوت:
[build]
cmd = "go build -o ./tmp/my-custom-binary ."
bin = "tmp/my-custom-binary"
برای نیازمندیهای بیلد پیچیدهتر، آرایههای pre_cmd
و post_cmd
در فایل پیکربندی به شما امکان میدهند تا دستوراتی قبل از و بعد از فرآیند بیلد را اجرا کنید به ترتیب.
5.3 محدود کردن دایرکتوریها و نظارت بر تغییرات
air
همچنین به شما امکان میدهد تا دایرکتوریها را از نظارت بر تغییرات مستثنی کنید که برای دایرکتوریهای حاوی منابع یا وابستگیها که نیاز به اجرای مجدد ندارند مفید است.
برای پیکربندی این مورد، فیلد exclude_dir
را در فایل .air.toml
بهروز کنید:
[build]
exclude_dir = ["assets", "tmp", "vendor", "node_modules"]
همچنین میتوانید include_dir
را استفاده کنید تا دایرکتوریهای اضافی را درگیر کنید و یا با include_ext
برای پسوند فایلهای خاص نظارت کنید.
فصل 6: استفادهی پیشرفته
6.1 راهاندازی air
با کانتینرهای Docker
استفاده از air
در داخل یک کانتینر Docker میتواند تنظیم توسعه شما، به خصوص هنگام کار با تیمها، را سریعتر کند. برای اضافه کردن air
به محیط Docker خود، Dockerfile
خود را بروز کنید تا air
را نصب کند و فایل .air.toml
خود را درون کانتینر کپی کند:
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 استفاده از air
در یک محیط Docker-compose
برای یکپارچهسازی air
در یک سرویس مدیریت شده توسط docker-compose
، یک سرویس را در فایل docker-compose.yaml
خود تعریف کنید:
version: '3.8'
services:
app:
build: .
ports:
- "808:808"
volumes:
- .:/app
command: ["air", "-c", ".air.toml"]
اطمینان حاصل کنید که دستورات volumes
دستور را به درستی فضای کاری پروژهی شما به دایرکتوری کاری درون کانتینر نقشهبرداری میکند تا air
بتواند تغییرات فایل را تشخیص دهد.
فصل 7: رفع مشکلات رایج و سوالات متداول
7.1 رفع خطا "command not found: air"
اگر با خطای "command not found: air" مواجه میشوید، معمولا به این معناست که فایل اجرایی air
در مسیر PATH
سیستم شما وجود ندارد. برای رفع این مشکل، مسیر Go binaries را به متغیر محیطی PATH
خود اضافه کنید:
export PATH=$PATH:$(go env GOPATH)/bin
مشکلات در محیطهای WSL
در محیط Windows Subsystem for Linux (WSL)، حتماً مطمئن شوید که کاراکترهای ویژه را در فایل .air.toml
خود اسکیپ کردهاید. به عنوان مثال، از \\
برای اسکیپ کردن بکاسلشها در مسیرهای فایل استفاده کنید.
نکات درباره کامپایل داغ بدون اجرای باینری
اگر میخواهید air
برنامه Go خود را کامپایل کند اما اجرای آن را انجام ندهد، cmd
را در بخش [build]
فایل .air.toml
خود به یک دستور بدون عملیات (مانند /bin/true
در سیستمهای مبتنی بر Unix) تنظیم کنید:
[build]
cmd = "/bin/true"
با انجام این کار، air
همچنان تغییرات فایلها را مشاهده کرده و فرآیند کامپایل را آغاز میکند، اما تلاشی برای اجرای فایل باینری نهایی انجام نخواهد داد.