تخطَّ إلى المحتوى

watchexec - تشغيل الأوامر عند تغيير الملفات

watchexec - تشغيل الأوامر عند تغيير الملفات

watchexec تراقب مجموعة من الملفات أو المجلدات وتشغّل أمرًا كلما تغيّرت. إنها محايدة لغة والمشروع — لا توجد حاجة لملف تكوين — وتتعامل مع الأجزاء الصعبة من مراقبة الملفات بالنسبة لك: إلغاء الارتجاع للتغييرات السريعة واحترام .gitignore وإعادة تشغيل العمليات طويلة الأمد بشكل نظيف وتمرير المسارات المتغيّرة إلى أمرك. استخدمها لإعادة تشغيل الاختبارات تلقائيًا أو إعادة تشغيل خادم dev أو إعادة البناء عند الحفظ.

التثبيت

المنصةالأمر
Cargo (جميع المنصات)cargo install watchexec-cli
macOS (Homebrew)brew install watchexec
Arch Linuxsudo pacman -S watchexec
Debian/Ubuntuقم بتنزيل .deb من الإصدارات
Windows (Scoop)scoop install watchexec
التحققwatchexec --version

الاستخدام الأساسي

الأمرالوصف
watchexec "cargo test"تشغيل الاختبارات عند أي تغيير
watchexec -e py "pytest"فقط شاهد ملفات .py
watchexec -e js,ts,jsx "npm run build"شاهد امتدادات متعددة
watchexec -- ls -laكل شيء بعد -- هو الأمر
watchexec --helpقائمة الخيارات الكاملة

تصفية ما تشاهده

الخيارالوصف
-e, --exts py,rsفقط تشغيل على امتدادات الملفات هذه
-w, --watch DIRشاهد مسار محدد (قابل للتكرار)
-i, --ignore GLOBتجاهل المسارات التي تطابق glob
--ignore-file FILEحمّل أنماط التجاهل من ملف
--no-vcs-ignoreلا تستخدم قواعد .gitignore
-f, --filter GLOBفقط شاهد الملفات المطابقة لـ glob

إدارة العمليات

الخيارالوصف
-r, --restartأعد تشغيل الأمر عند التغيير (قتل + إعادة تشغيل)
-s, --signal SIGالإشارة المراد إرسالها عند إعادة التشغيل (مثل SIGTERM)
--stop-timeout 5sفترة السماح قبل القتل القسري
-o, --on-busy-update MODEqueue أو do-nothing أو restart أو signal
-nلا مجموعة عمليات (أرسل الإشارة إلى الطفل المباشر فقط)

استخدم -r للعمليات طويلة المدى (الخوادم) والافتراضي للأوامر التي تعمل مرة واحدة (الاختبارات والبناء).

إلغاء الارتجاع والتوقيت

الخيارالوصف
--debounce 200msانتظر حتى تستقر التغييرات قبل التشغيل
--delay-run 1sتأخير قبل تشغيل الأمر
-p, --postponeلا تشغّل حتى التغيير الأول (تخطّ التشغيل الأولي)

السلوك المفيد

الخيارالوصف
-c, --clearامسح الشاشة قبل كل تشغيل
--emit-events-to environmentمرّر المسارات المتغيّرة عبر متغيرات env
-N, --notifyإشعار سطح المكتب عند الانتهاء
--project-origin DIRحدد جذر المشروع لقواعد التجاهل
-vمفصل (يصحح ما ينبه)

متغيرات البيئة (المسارات المتغيّرة)

عند بعث الأحداث إلى البيئة يمكن لأمرك أن يرى ما تغيّر:

المتغيريحتوي على
WATCHEXEC_COMMON_PATHالبادئة المشتركة للمسارات المتغيّرة
WATCHEXEC_WRITTEN_PATHالملفات المكتوبة
WATCHEXEC_CREATED_PATHالملفات المنشأة
WATCHEXEC_REMOVED_PATHالملفات المحذوفة

سير العمل الشائع

# إعادة تشغيل مجموعة الاختبارات تلقائيًا عند أي تغيير المصدر
watchexec -e rs "cargo test"

# أعد تشغيل خادم dev بنظافة عند التغيير
watchexec -r -e go "go run ./cmd/server"

# أعد البناء ومسح الشاشة وتجاهل مجلد dist
watchexec -c -i "dist/**" -e ts "npm run build"

# فقط بعد استقرار التغييرات (تجنب الضجة عند الحفظ بالدفعة)
watchexec --debounce 500ms -e py "pytest -x"

watchexec مقابل الأدوات ذات الصلة

الأداةالنموذج
watchexecمراقب ملفات قائم بذاته خالي من التكوين
entrالحد الأدنى يقرأ قائمة الملفات من stdin
nodemonركز على Node وأعد تشغيل تطبيقات node
mise/just + watchexecمنفذو المهام الذين يستدعونهم إلى watchexec

منفذو المهام مثل just و mise غالبًا ما يقترنان بـ watchexec لإضافة مراقبة الملفات إلى وصفاتهم.

الموارس