frak: دیپلوی سریع با rsync و SSH
خلاصهٔ کاملتر
اگه پروژهات سادهست و نیازی به Docker یا CI/CD پیچیده نداری، frak دقیقاً همون چیزیه که دنبالش بودی. این ابزار کوچیک جاوااسکریپتی طراحی شده تا فایلها رو از نقطه A به نقطه B بفرسته؛ سریع، بیدردسر، و با استفاده از rsync روی SSH.
فلسفه frak اینه که خیلی از پروژهها اصلاً به کانتینر یا پایپلاینهای پیچیده نیاز ندارن. یه انتقال فایل مطمئن به سرور کافیه. frak همین کار رو میکنه، ولی با چند ویژگی هوشمند که تجربه دیپلوی رو خیلی بهتر میکنه.
برای شروع، کافیه توی پوشه پروژهات دستور init رو بزنی تا یه فایل کانفیگ ساده ساخته بشه:
export default {
server: "user@example.com",
root: "/var/www/html",
};همین دو خط کافیه. آدرس سرور و مسیر روت رو وارد میکنی و بعدش هر وقت خواستی دیپلوی کنی، فقط npx @frakjs/frak رو اجرا میکنی.
یکی از بهترین ویژگیهای frak اینه که قبل از هر بار آپلود، یه dry-run preview نشون میده. یعنی میبینی دقیقاً چه فایلهایی قراره تغییر کنن، و بعد ازت میپرسه که ادامه بدی یا نه. اگه بخوای تغییرات رو خطبهخط هم ببینی، دستور diff این کار رو با یه نمای رنگی شبیه git patch انجام میده:
npx @frakjs/frak difffrak علاوه بر push، از pull هم پشتیبانی میکنه؛ یعنی میتونی تغییرات سرور رو برگردونی به لوکال. بکاپها بهصورت patch-based روی سرور نگهداری میشن تا در صورت نیاز rollback راحت باشه. دسترسی سریع به SSH console داخل deploy root هم یه امکان دیگهست که بدون ترک محیط ابزار میشه ازش استفاده کرد.
post-deploy hooks هم یه ویژگی کاربردیه که بهت اجازه میده بعد از دیپلوی، دستوراتی مثل ریاستارت سرویسها رو بهصورت خودکار اجرا کنی. این یعنی کل فرآیند دیپلوی میتونه با یه دستور انجام بشه.
frak نیازی به نصب جداگانه نداره و از طریق npx مستقیماً قابل اجراست. تنها پیشنیازش داشتن Node.js و npx روی سیستمه. این پروژه تحت لایسنس MIT منتشر شده و کد منبعش روی GitHub در دسترسه.
نکات کلیدی:
- انتقال فایل با rsync روی SSH، بدون نیاز به کانتینر یا رپو
- نمایش تعاملی تغییرات قبل از هر دیپلوی (dry-run + diff رنگی)
- پشتیبانی از rollback با بکاپهای patch-based روی سرور
- اجرای دستورات post-deploy مثل ریاستارت سرویس
- پشتیبانی از pull برای سینک تغییرات از سرور به لوکال
- اجرا از طریق npx، بدون نیاز به نصب جداگانه




