هل اضطررت يومًا لاستخدام npm install -g لتثبيت أداة (مثل create-next-app أو eslint) لمجرد تشغيلها؟ بمرور الوقت، تتراكم على جهاز الكمبيوتر الخاص بك إصدارات قديمة من الحزم العالمية المثبتة منذ فترة طويلة، مما يجعل البيئة فوضوية.
إذا كانت هناك طريقة لتشغيل وظائف الحزمة حيث
| الهدف | الوصف |
|---|---|
| استخدام أحدث إصدار | استدعاء أحدث إصدار من الأداة عند الحاجة فقط |
| عدم شغل مساحة | استخدامه ثم التخلص منه، دون شغل أي مساحة على الإطلاق عند عدم الحاجة |
هذه هي اللحظة التي يظهر فيها npx.
المفهوم الأساسي لـ npx: “الغوغاء الخاطف” في عالم البرمجة
تخيل أنك تريد تناول وعاء ساخن حار اليوم.
| الوضع | الوصف |
|---|---|
npm install |
تشتري مجموعة كاملة من الأواني والمقالي والموقد وقاعدة الحساء (مخزنة محليًا أو عالميًا). لديك كل هذا متى أردت تناول الطعام لاحقًا، لكنها تشغل مساحة كبيرة في المطبخ، وإذا تركت دون غسل لفترة طويلة، فإنها تتعفن (الإصدار قديم). |
npx |
تتصل بـ “طاهٍ سريع” لإحضار المعدات مباشرة إلى منزلك، طهي هذه الوجبة، غسل الوعاء، والمغادرة. يبقى مطبخك نظيفًا، ويضمن أن يحضر الطاهي أحدث قاعدة حساء في كل مرة. |
هذا الوضع “للاستئجار فقط” هو تجسيد لروح Vibe Coding:
السعي وراء بيئة بسيطة، واستخدام أحدث إصدار دائمًا، و تركيز الطاقة على خلق القيمة، وليس الحفاظ على بيئة فوضوية.
منطق البحث: أكثر من مجرد تنزيل وتشغيل
عندما تكتب npx <اسم-الحزمة>، فإنه يبدأ منطق عملية “البحث عن برنامج قابل للتنفيذ”:
| العملية | الوصف |
|---|---|
| 1. تحقق في المنزل أولاً | تحقق مما إذا كان الأمر موجودًا بالفعل في node_modules/.bin المحلي للمشروع أو البيئة العالمية. |
| 2. الجلب إذا لم يتم العثور عليه | إذا لم يتم العثور عليه، فإنه يذهب تلقائيًا إلى سجل npm لجلب “إصدار مؤقت”. |
| 3. التجاهل بعد التنفيذ | بعد تشغيل الأمر، لن تبقى هذه الحزمة في جهاز الكمبيوتر الخاص بك لتشغل مساحة. |
هذا ملحوظ بشكل خاص عند تنفيذ حزم المشروع المحلية. سابقًا، كان علينا تشغيل ./node_modules/.bin/tailwind-cli، وهو مسار طويل بما يكفي ليجعلك تبكي؛ الآن فقط اكتب بجرأة في جذر المشروع:
npx tailwind-cli build
إنه مثل الخادم الذكي الذي يعرف ما قمت بتثبيته في مشروعك ويساعدك مباشرة في محاذاة المسار للتنفيذ.
كيف يعرف npx أمر الحزمة الذي يجب تشغيله؟
قد تشعر بالفضول، بالنسبة لأوامر مثل npx skills add vercel-labs/agent-skills، كيف يجد npx الكود السحابي من كلمة واحدة؟
هذا بفضل بطاقة هوية package.json الخاصة بالحزمة. في إعدادات الحزمة، يحدد المطورون حقل bin:
{
"name": "skills",
"bin": {
"skills": "./bin/cli.mjs",
"add-skill": "./bin/cli.mjs"
}
}
هذا يعمل كـ “النافذة الخارجية” للحزمة. عندما تستدعي npx skills، يحدث ما يلي:
| الخطوة | الوصف |
|---|---|
| 1 | يذهب npx إلى سجل npm للبحث عن حزمة تسمى skills |
| 2 | ينفذ البرنامج النصي المسجل في bin الخاص به. |
أما بالنسبة لـ “كيفية بناء المنزل (add تثبيت الحزمة)"، فهذه هي التقنية الاحترافية لهذه الحزمة (حزمة skills).
نصائح متقدمة: الاسم والأمر غير متطابقين؟
ماذا لو كان اسم الحزمة tools-package، ولكن الأمر يسمى run-me؟ أو ماذا لو كنت تريد تحديد إصدار قديم معين للاختبار؟
في هذه المرحلة، نتوقف عن الاعتماد على الطيار الآلي وننتقل إلى طريقة “تحديد الحزمة”:
npx -p [email protected] run-me "Show me the way"
| السطر | الوصف |
|---|---|
-p [email protected] |
يخبر npx بجلب هذه الحزمة المحددة لك. |
run-me |
هذا هو الأمر الذي تريد تشغيله. |
الخاتمة
لقد غير npx تمامًا عادتنا في استخدام أدوات CLI. إنه يسمح للمطورين بإدارة الأدوات بطريقة أخف وأكثر مرونة، ولم يعودوا مقيدين بإعدادات البيئة المعقدة.
هذه العملية الأنيقة “الموجودة في كل مكان، والمتاحة عند الطلب” تسمح لك بإكمال المهام بسرعة ودقة وبلا هوادة في إيقاع Vibe Coding!