كيف تحدّث npm داخل لاراڤيل سْيل (Sail) ؟
طريقة ترقية npm داخل Laravel Sail 🔗
أثناء تطوير موقع بإطار العمل لارافيل ، واجهتني رسالة تخبرني بأن أقوم بترقية وتحديث مدير حزم نود npm ، وهذه هي الرسالة.
npm notice
npm notice New patch version of npm available! 9.6.4 -> 9.6.5
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.6.5>
npm notice Run npm install -g [email protected] to update!
npm notice
لكن عندما حاولت تحديث مدير حزم نود npm بهذا الأمر، التحديث لم ينجح!
npm install -g [email protected]
لأن هذا الأمر يقوم بترقية وتحديث npm المثبت على جهازك ، وليس الموجود داخل بيئة التطوير Laravel Sail لأن لارافيل سيل هي بيئة تطوير تعتمد على دوكر Docker container وهو معزول عن بيئة جهازك.
لذلك ، حاولت ترقية npm من خلال هذا الأمر الذي يحاول تحديث npm داخل docker عن طريق أمر Sail . ولكن لم ينجح الأمر.
sail npm install -g [email protected]
لم ينجح الأمر. لأن الـ shell ليس صدفية جذر (ليس root shell). أي لا يمكن ترقية البرامج في الصدفية الخاصة بالمستخدم العادي. لذلك نحتاج إلى الدخول إلى صدفية المستخدم الجذر root shell .
لحسن الحظ ، نظام Laravel Sail فيه هذه الميزة . يُمكننا بكل بساطة فتح الـ root shell من خلال هذا الأمر.
sail root-shell
بعد ذلك ، نقوم بإستخدام أمر ترقية npm وتحديثها لأحدث إصدار بكل سهولة من خلال هذا الأمر.
npm install -g [email protected]
بعد الإنتهاء من تحديث npm نخرج من الـ root shell prompt من خلال أمر الخروج.
exit
ولكن هذه الترقية التي قمنا بها ستكون متاحة أثناء تشغيل هذا الـ container في الوقت الحالي فقط. ولكن إن قمنا بإيقاف الـ laravel sail من خلال sail down
ثم شغلناه من خلال الأمر sail up -d
لن تكون نسخة npm هي النسخة الأحدث بل ستكون ما زالت بالإصدار القديم.
لذا نحتاج إلى إعادة بناء الـ docker container من جديد من خلال الأمر التالي لكي يتم تحديث npm بشكل صحيح.
bash vendor/bin/sail build --no-cache
استخدمنا --no-cache
في الأمر السابق لكي لا يستخدم نظام Laravel Sail الملفات المحفوظة مؤقتاً لإعادة بناء الحاوية الـ docker container ولكن يقوم بجلب/تنزيل كل الملفات والبرمجيات التي يحتاجها من docker hub الرسمي؛ وبذلك نحصل على تحديث وترقية لكل البرمجيات المستخدمة داخل الـ container بما فيها npm التي نريد ترقيتها.
وبذلك نكون قد انتهينا من تحديث وترقية مدير الحزم الخاص بـ NodeJS Package Manager وهو npm كما تعرف، بالطريقة الصحيحة.
أتمنى أن تكون قد استفدت من الموضوع ، إن كنت تعرف أي شخص يُمكنه الإستفادة من هذه المعلومات، ارسل له رابط هذا المقال. إن أردت معرفة الموضوعات الجديدة بعد نشرها مباشرةً على موقع أبانوب حنا ، تابعني على يوتيوب و تيليجرام ، و فيسبوك ، و واتساب .