اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

npm و pnpm كلاهما مديرا حزم لـ Node.js , يعتبر pnpm أكثر سرعة وفعالية من npm في تثبيت الحزم ومعالجتها والتعامل معها , عندما تقوم بتثبيت حزمة باستخدام PNPM ، سيتم تخزينها على مستوى بيئة الحاسوب بشكل كامل بحيث اذا اردت استخدام حزمة ما في أي مشروع سيقوم PNPM بإنشاء ارتباط مع النسخة بدلا من نسخها وهذا يعتبر بديلا أسرع وفعالا أكثر من npm للتعامل مع الحزم , يمكنك ثبيت pnpm من خلال الأمر 

npm install -g pnpm 

 

  • 3
نشر

كلًا من NPM و PNPM يقوم بإدارة وتحميل الحزم الخاصة بـ Node.js ولكن بطرق مختلفة، فبداية من الإصدار 3 في NPM أصبح يتم تحميل الحزم وتخزينها في مجلد node_modules على شكل flattened dependency tree أي أن كل حزمة يكون لها مجلد خاص بها منفصل عن باقي الحزم بالكامل، وبالتالي يمكن لأكثر من مكتبة أن تستعمل نفس الحزمة بدون الحاجة لتحميل الحزمة مرتين (مرة لكل مكتبة) في المشروع الواحد، وبالتالي هذا الأمر يوفر في المساحة المستخدمه لتخزين الحزم والمكتبات في المشروع، ولكن بالنسبة لمشروع آخر فيجب أن يتم تحميل الحزم مرة أخرى وتخزينها في مجلد node_modules جديد خاص بالمشروع الثاني، وهذا الأمر يسبب في بطء عملية تحميل وتثبيت الحزم وخصوصًا إن كنت تعمل على مشاريع متعددة.

على الجانب الآخر يستعمل PNPM طريقة مختلفة لتثبيت الحزم، حيث يتم تثبيت الحزم والمكتبات في مكان عام (على القرص C على سبيل المثال) ثم يتم عمل إختصار (hard linking and symbolic linking) لمجلد الحزمة في مجلد node_modules الخاص بالمشروع، وبالتالي لا يتم تحميل وتثبيت الحزمة إلا مرة واحدة ثم يتم إستعمالها في كل المشاريع المختلفة بدون مشكلة.

هنا مثال لكيف سيبدو مجلد node_modules في حالة تم إستعمال PNPM، حيث ستجد أن المجلد الخاص بكل حزمة يشير إلى مجلد بنفس الاسم ولكن في مكان مختلف (داخل مجلد التثبيت العام والذي يشار إليه في الشكل التالي بـ <store>):

node_modules
└── .pnpm
    ├── bar@1.0.0
    │   └── node_modules
    │       └── bar -> <store>/bar
    │           ├── index.js
    │           └── package.json
    └── foo@1.0.0
        └── node_modules
            └── foo -> <store>/foo
                ├── index.js
                └── package.json

يمكنك تثبيت PNPM من خلال الأمر التالي:

npm install -g pnpm 

ويمكنك أن تستخدمه لتثبيت الحزم أو حذفها أو تحديثها من خلال الأوامر:

pnpm add <pkg>
pnpm remove <pkg>
pnpm up <pkg>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...