Npmrc وتحسين إعداد بيئة Node.js

Npm هي أداة العمل اليومية لمطوري Node.js. إنه ، حرفياً ، شيء نستخدمه كل يوم وعدة مرات في اليوم. هذا جزء من نظام Node.js البيئي الذي أدى إلى نجاح هذه المنصة.



واحدة من أهم الميزات المفيدة لـ npm CLI هي أنه قابل للتخصيص بدرجة عالية. إن إمكانيات تخصيصه هائلة حقًا. يتيح هذا لجميع فئات المستخدمين العمل بفعالية مع npm - من المؤسسات الكبيرة إلى المطورين المستقلين.



إحدى آليات التخصيص npm هي .npmrc. لقد كنت أشاهد المناقشات حول هذا الملف لفترة طويلة. أتذكر بشكل خاص الوقت الذي اعتقدت فيه أنه باستخدام هذا الملف يمكنك تغيير اسم الدليلnode_modules... لفترة طويلة ، لم أفهم تمامًا مدى فائدة ذلك .npmrc، أو كيفية استخدامه على الإطلاق. لذلك ، أود اليوم أن أتحدث عن بعض الاحتمالات لتخصيص بيئة عمل Node.js باستخدام . تساعدني هذه الإعدادات في أن أكون أكثر فاعلية عند إعداد وحدات Node.js وعند العمل على تطبيقات طويلة المدى.







.npmrc



أكثر تقدمًا قليلاً من التشغيل الآلي المعتاد للأمر init npm



عند إنشاء وحدة نمطية جديدة من البداية ، يبدأ العمل عادةً بفريق npm init. بعض المطورين لا يعرفون شيئًا أو شيئين عن هذا الأمر. الحقيقة هي أن عملية إنشاء وحدات جديدة يمكن أن تتم آليًا إلى حد كبير من خلال اللجوء إلى عرض الأوامر npm config set ...التي تسمح لك بتعيين الخيارات التي يتم استبدالها افتراضيًا عند npm initالبدء في طرح أسئلة حول مشروع جديد.



وهي كيف يمكنك تحديد اسمك وعنوان بريدك الإلكتروني وعنوان URL لموقع الويب ومعلومات الترخيص والإصدار الأولي من الوحدة. هذه هي الأوامر التالية:



npm config set init.author.name "Hiro Protagonist"
npm config set init.author.email "hiro@showcrash.io"
npm config set init.author.url "http://hiro.snowcrash.io"
npm config set init.license "MIT"
npm config set init.version "0.0.1"


في هذا المثال ، قمت بتعيين بعض القيم الافتراضية للمطور Hiro. لا تتغير البيانات الشخصية للمطورين في كثير من الأحيان ، لذا فإن تعيين بعض القيم الافتراضية يسمح لك بعدم إدخالها يدويًا في كل مرة.



بالإضافة إلى ذلك ، هناك قيمتان تتعلقان بالوحدات النمطية.



الأول هو الترخيص الذي سيقترحه الفريق تلقائيًا npm init. أنا شخصياً أفضل استخدام ترخيص MIT. يفعل معظم مطوري Node.js الآخرين نفس الشيء. وهكذا ، هنا يمكنك تعيين ما تريد. تعد القدرة على تحديد الترخيص الذي تستخدمه تلقائيًا تقريبًا تحسينًا جيدًا.



القيمة الثانية هي الإصدار الأولي للوحدة. هذه تافهة ، لكن هذه الفرصة جعلتني سعيدًا حقًا. الحقيقة هي أنه في كل مرة أبدأ في إنشاء وحدة نمطية ، لم أرغب في البدء بالإصدار 1.0.0 ، والذي يتم تقديمه افتراضيًا npm init. أقوم دائمًا بتعيين رقم الإصدار على 0.0.1، وبعد ذلك ، أثناء عملي على الوحدة ، قمت بزيادتها باستخدام أوامر مثل npm version [ major | minor | patch ].



تعديل سجل npm القياسي



التقدم لا يزال قائما ، وبالتالي فإن النظام البيئي npm لديه المزيد والمزيد من الفرص للعمل مع سجلات الحزم. على سبيل المثال ، قد تحتاج إلى استخدام ذاكرة تخزين مؤقت للوحدات النمطية التي يعرف المطور أنها ستكون ضرورية للتطبيق. أو ربما يقرر شخص ما استخدام سجل للوحدات النمطية التي اجتازت نوعًا من التحقق الإضافي والشهادة. يوجد حتى وحدة تسجيل منفصلة لـ Yarn ، لكن هذا الموضوع ، على الرغم من كونه مثيرًا للاهتمام للغاية ، لا ينطبق على محادثتنا اليوم.



لذلك ، إذا كنت بحاجة إلى استخدام سجل الوحدة النمطية الخاص بك مع npm ، فسيتم ذلك باستخدام أمر بسيط من سطر واحد:



npm config set registry "https://my-custom-registry.registry.nodesource.io/"


يمكن استبدال عنوان التسجيل التقليدي المستخدم في هذا الأمر بعنوان أي سجل متوافق. لإعادة هذا الإعداد إلى القيمة الافتراضية ، يمكنك تشغيل نفس الأمر بعنوان السجل القياسي الذي تم تمريره إليه:



npm config set registry "https://registry.npmjs.com/"


معلمة loglevel وتعيين ما يطبعه أمر npm install إلى وحدة التحكم



عندما تقوم بتثبيت وحدات باستخدام أمر ما npm install، تسقط عليك مجموعة كاملة من المعلومات. أدوات سطر الأوامر ، بشكل افتراضي ، تحد من كمية هذه المعلومات. هناك درجات متفاوتة من التفاصيل في الإخراج. يمكن تكوين هذا إما عند تثبيت npm ، أو عن طريق تعيين المعلمات المكتوبة .npmrcوالمستخدمة بشكل افتراضي. يتم ذلك باستخدام أمر العرض npm config set loglevel=»..». فيما يلي خيارات قيم المعلمات loglevel- من الأكثر "اقتضابًا" إلى الأكثر "ثرثرة":



  • صامتة
  • خطأ
  • تحذير
  • http
  • معلومات
  • مطول
  • سخيف


هذا ما يبدو عليه تثبيت الحزمة عند استخدام المعلمة loglevelالتي كُتبت بها silent.



صورة

الوضع الصامت لعرض المعلومات عند تثبيت الحزم



إليك ما يحدث إذا تم ضبطه loglevelعلى silly.



صورة

وضع الإخراج السخيف عند تثبيت الحزم



إذا كنت تريد عرض المزيد من المعلومات (أو أقل قليلاً) عند تثبيت الحزم أكثر من المعتاد loglevel، يمكنك تغيير القيمة الافتراضية. على سبيل المثال - مثل هذا:



npm config set loglevel="http"


إذا جربت هذا الإعداد قليلاً وقررت إعادة تعيينه إلى npm CLI الافتراضي ، فقم بتشغيل الأمر التالي:



npm config set loglevel="warn"


تغيير مكان تثبيت npm للوحدات النمطية العامة افتراضيًا



هذه فرصة رائعة. يستغرق الأمر القليل من الإصلاح للحصول على npm لتثبيت الحزم العالمية في موقع جديد ، لكن الجهد يستحق الجهد المبذول. النقطة المهمة هي أنه بمساعدة العديد من الأوامر ، يمكنك تغيير الموقع الذي تقوم فيه npm ، افتراضيًا ، بتثبيت الوحدات النمطية العالمية. يتم تثبيتها عادةً في مجلد نظام ذي امتيازات ، الأمر الذي يتطلب سلطة إدارية. في الأنظمة المستندة إلى UNIX ، هذا يعني أن الأمر مطلوب لتثبيت الوحدات النمطية العالمية sudo.



إذا كتبت في المعلمة prefixالمسار إلى الدليل غير المميز ، على سبيل المثال ،~/.global-modules، هذا يعني أنك لن تحتاج إلى المصادقة عند تثبيت الوحدات العمومية. هذه هي إحدى نقاط القوة في هذا الإعداد. نقطة قوية أخرى هي أن الوحدات المثبتة عالميًا لن تكون موجودة في دليل النظام ، مما يقلل من احتمالية أن تؤدي بعض الوحدات الخطرة (عن قصد أو بغير قصد) إلى شيء سيء للنظام.



أولاً ، دعنا ننشئ مجلدًا جديدًا باسم global-modulesونكتبه إلى prefix:



mkdir ~/.global-modules
npm config set prefix "~/.global-modules"


علاوة على ذلك ، إذا لم يكن لدينا ملف ~/.profile، فسننشئ مثل هذا الملف في الدليل الجذر للمستخدم. دعنا نضيف ما يلي إلى هذا الملف:



export PATH=~/.global-modules/bin:$PATH


~/.profileسيضيف هذا السطر في الملف مجلدًا global-modulesإلى PATHهذا المجلد وسيستخدمه لتثبيت وحدات npm العالمية.



الآن ، في المحطة ، تحتاج إلى تشغيل الأمر التالي للتحديث PATHباستخدام الملف الذي حررته للتو ~/.profile:



source ~/.profile


النتيجة



تمت كتابة هذه المقالة لمساعدة أي شخص يريد إعداد بيئة تطوير Node.js الخاصة به بالطريقة التي يريدها بالضبط. هنا توثيق الأمر npm config. ها هو الملف .npmrc.



كيف تقوم بتكوين npm؟






All Articles