Npm
این پی ایم جاوا اسکرپٹ پروگرامنگ زبان کے لیے ایک پیکیج مینیجر ہے جسے این پی ایم، انکارپوریٹڈ کے ذریعے برقرار رکھا جاتا ہے۔ این پی ایم جاوا اسکرپٹ رن ٹائم ماحول Node.js کے لیے ڈیفالٹ پیکیج مینیجر ہے اور اسے Node.js انسٹالر میں ایک تجویز کردہ خصوصیت کے طور پر شامل کیا گیا ہے۔ یہ ایک کمانڈ لائن کلائنٹ پر مشتمل ہوتا ہے، جسے این پی ایم بھی کہا جاتا ہے، اور عوامی اور ادا شدہ نجی پیکجوں کا ایک آن لائن ڈیٹا بیس، جسے این پی ایم رجسٹری کہا جاتا ہے۔ رجسٹری تک کلائنٹ کے ذریعے رسائی حاصل کی جاتی ہے، اور دستیاب پیکجوں کو این پی ایم ویب سائٹ کے ذریعے براؤز اور سرچ کیا جا سکتا ہے۔ پیکیج مینیجر اور رجسٹری کا انتظام این پی ایم، انکارپوریٹڈ کے ذریعے کیا جاتا ہے۔ ہسٹری این پی ایم کو آئزک زیڈ شلوئیٹر نے تیار کیا تھا جس کے نتیجے میں "ماڈیول پیکیجنگ کو بہت اچھی طرح سے دیکھا گیا تھا" اور اسی طرح کے دیگر منصوبوں جیسے پی ای اے آر (پی ایچ پی) اور سی پی اے این (پرل) سے متاثر تھا۔ این پی ایم پی ایم کے لیے جاوا اسکرپٹ کا متبادل ہے، جو ایک شیل اسکرپٹ ہے۔ اگرچہ "این پی ایم" کو عام طور پر "نوڈ پیکیج مینیجر" کا مخفف سمجھا جاتا ہے، لیکن اس کا باضابطہ مطلب ہے "این پی ایم کوئی مخفف نہیں ہے"۔ استعمال این پی ایم ایسے پیکجوں کا انتظام کر سکتا ہے جو کسی خاص پروجیکٹ کے مقامی انحصار کے ساتھ ساتھ عالمی سطح پر نصب جاوا اسکرپٹ ٹولز ہیں۔ جب کسی مقامی پروجیکٹ کے لیے انحصار مینیجر کے طور پر استعمال کیا جاتا ہے، تو این پی ایم ایک کمانڈ میں، package.json فائل کے ذریعے کسی پروجیکٹ کے تمام انحصار کو انسٹال کر سکتا ہے۔ package.json فائل میں، ہر انحصار سیمنٹک ورژننگ اسکیم کا استعمال کرتے ہوئے درست ورژن کی ایک رینج کی وضاحت کر سکتا ہے، جس سے ڈویلپرز اپنے پیکجوں کو خود بخود اپ ڈیٹ کر سکتے ہیں جبکہ بیک وقت ناپسندیدہ بریکنگ تبدیلیوں سے بچ سکتے ہیں۔ این پی ایم ڈویلپرز کو اپنے پیکجوں کو ایک مخصوص ورژن کے ساتھ ٹیگ کرنے کے لیے ورژن-بمپنگ ٹولز بھی فراہم کرتا ہے۔ این پی ایم package-lock.json فائل بھی فراہم کرتا ہے جس میں package.json میں سیمنٹک ورژننگ کا جائزہ لینے کے بعد پروجیکٹ کے ذریعہ استعمال ہونے والے عین ورژن کی اندراج ہوتی ہے۔ کلائنٹ این پی ایم کا کمانڈ لائن انٹرفیس کلائنٹ صارفین کو جاوا اسکرپٹ ماڈیولز کو استعمال کرنے اور تقسیم کرنے کی اجازت دیتا ہے جو رجسٹری میں دستیاب ہیں۔ فروری 2018 میں، ورژن 5.7.0 میں ایک مسئلہ دریافت ہوا جس میں لینکس سسٹمز پر سوڈو این پی ایم چلانے سے سسٹم فائلوں کی ملکیت بدل جائے گی، جس سے آپریٹنگ سسٹم مستقل طور پر ٹوٹ جائے گا۔ این پی ایم ورژن 6 میں، آڈٹ فیچر متعارف کرایا گیا تھا تاکہ ڈویلپرز کو انسٹال شدہ پیکجوں میں حفاظتی کمزوریوں کی نشاندہی کرنے اور انہیں ٹھیک کرنے میں مدد ملے۔ حفاظتی خطرات کا ذریعہ نوڈ سیکیورٹی پلیٹ فارم (این ایس پی) پر پائی جانے والی رپورٹوں سے لیا گیا تھا اور این پی ایم کے این ایس پی کے حصول کے بعد سے این پی ایم کے ساتھ مربوط کیا گیا ہے۔ رجسٹری میں رجسٹری پیکیجز ایسما اسکرپٹ ماڈیول (ای ایس ایم) یا کامن جے ایس فارمیٹ میں ہوتے ہیں اور اس میں جے ایس او این فارمیٹ میں میٹا ڈیٹا فائل شامل ہوتی ہے۔ مرکزی این پی ایم رجسٹری میں 13 لاکھ سے زیادہ پیکیجز دستیاب ہیں۔ رجسٹری میں جمع کرانے کے لیے جانچ پڑتال کا کوئی عمل نہیں ہے، جس کا مطلب ہے کہ وہاں پائے جانے والے پیکیجز ممکنہ طور پر کم معیار، غیر محفوظ یا بدنیتی پر مبنی ہو سکتے ہیں۔ اس کے بجائے، این پی ایم پیکیجز کو ہٹانے کے لیے صارف کی رپورٹوں پر انحصار کرتا ہے اگر وہ کم معیار، غیر محفوظ، یا بدنیتی پر مبنی ہونے کی وجہ سے پالیسیوں کی خلاف ورزی کرتے ہیں۔ این پی ایم پیکجوں کے معیار کا فیصلہ کرنے میں ڈویلپرز کی مدد کے لیے ڈاؤن لوڈ کی تعداد اور منحصر پیکجوں کی تعداد سمیت اعداد و شمار کو بے نقاب کرتا ہے۔ اندرونی طور پر این پی ایم عوامی طور پر دستیاب ڈیٹا کو منظم کرنے کے لیے این او ایس کیو ایل کوچ ڈی بی پر انحصار کرتا ہے۔ سیکیورٹی اور خلل انحصار سلسلہ کے مسائل مارچ 2016 میں، این پی ایم نے لیفٹ پیڈ نامی پیکیج کے بعد پریس کی توجہ مبذول کروائی، جس پر بہت سے مشہور جاوا اسکرپٹ پیکیجز انحصار کرتے تھے، خود سکھائے گئے سافٹ ویئر انجینئر آزر کوچولو اور کک کے درمیان نام کے تنازعہ کے نتیجے میں غیر شائع ہوا۔ اگرچہ پیکیج کو تین گھنٹے بعد دوبارہ شائع کیا گیا تھا، لیکن اس سے بڑے پیمانے پر خلل پڑا، جس کی وجہ سے این پی ایم نے مستقبل میں اسی طرح کے واقعے کو روکنے کے لیے اپنی پالیسیاں تبدیل کیں۔ اپریل 2020 میں، آئی ایس-پرامز نامی ایک چھوٹے سے پیکیج کے نتیجے میں بہت سی بڑی اور اہم ایپلی کیشنز کا انحصار ہونے کی وجہ سے دنیا بھر میں سرور لیس ایپلی کیشنز اور تعیناتی میں رکاوٹ پیدا ہوئی۔ سمجھوتہ شدہ اور خلل ڈالنے والے ترمیم شدہ پیکیجز جولائی 2018 میں، مقبول ایسلنٹ-اسکوپ پیکیج کے مینٹینر کی این پی ایم اسناد سے سمجھوتہ کیا گیا جس کے نتیجے میں ایسلنٹ-اسکوپ، ورژن 3.7.2 کی بدنیتی پر مبنی ریلیز ہوئی۔ بدنیتی پر مبنی کوڈ نے ایسلنٹ اسکوپ چلانے والی مشین کے این پی ایم اسناد کی نقل کی اور انہیں حملہ آور پر اپ لوڈ کیا۔ نومبر 2018 میں، یہ دریافت کیا گیا کہ مقبول پیکیج ایونٹ اسٹریم کے ورژن 3.3.6 پر انحصار کے طور پر ایک بدنیتی پر مبنی پیکیج شامل کیا گیا تھا۔ اس بدنیتی پر مبنی پیکیج، جسے فلیٹ میپ-اسٹریم کہا جاتا ہے، میں ایک خفیہ کردہ پے لوڈ موجود تھا جو بعض ایپلی کیشنز سے بٹ کوائن چوری کرتا تھا۔ این پی ایم کے منتظمین نے خلاف ورزی کرنے والے پیکیج کو ہٹا دیا۔ جنوری 2022 میں، مقبول پیکیج کے رنگوں کے دیکھ بھال کرنے والے نے کچرے کے متن کو لامحدود لوپ میں پرنٹ کرنے والی تبدیلیوں کو آگے بڑھایا۔ دیکھ بھال کرنے والے نے ایک اور مشہور پیکیج، فیکر، اور اس کے پیکیج کے ذخیرے کو بھی این پی ایم پر صاف کر دیا، اور اس کی جگہ ایک ریڈمی لگا دیا جس پر لکھا تھا، "ایرون سوارٹز کو واقعی کیا ہوا؟" مارچ 2022 میں، ڈویلپر برینڈن نزاکی ملر نے پیکیج نوڈ-آئی پی سی کا ایک ورژن جاری کیا جس میں بدنیتی پر مبنی کوڈ تھا جو یوکرین پر روسی حملے کے احتجاج میں بیلاروس اور روسی آئی پی پتے والے صارفین کی فائلوں کو حذف کر دے گا۔ Vue.js، جو نوڈ-آئی پی سی کو انحصار کے طور پر استعمال کرتا ہے، نے اپنے انحصار کو محفوظ ورژن میں پن نہیں کیا، اس کا مطلب ہے کہ اگر انحصار کو تازہ ترین پیکیج کے طور پر لایا گیا تو Vue.js کے کچھ صارفین بدنیتی پر مبنی پیکیج سے متاثر ہوئے۔ متاثرہ انحصار یونٹی ہب کے ورژن 3.1 میں بھی مختصر طور پر موجود تھا ؛ تاہم، اس مسئلے کو دور کرنے کے لیے اسی دن ایک ہاٹ فکس جاری کیا گیا تھا۔ متبادل ماڈیولر جاوا اسکرپٹ انسٹال کرنے کے لیے این پی ایم کے کئی اوپن سورس متبادل ہیں، جن میں آئی ای ڈی، پی این پی ایم، این پی ایم ڈی، اور سوت شامل ہیں، جن میں سے آخری فیس بک نے اکتوبر 2016 میں جاری کیا تھا۔ وہ سب عوامی این پی ایم رجسٹری کے ساتھ مطابقت رکھتے ہیں اور اسے پہلے سے طے شدہ طور پر استعمال کرتے ہیں، لیکن مختلف کلائنٹ سائیڈ کے تجربات فراہم کرتے ہیں، جو عام طور پر این پی ایم کلائنٹ کے مقابلے میں کارکردگی اور عزم کو بہتر بنانے پر مرکوز ہوتے ہیں۔ سافٹ ویئر ریپوزیٹری حوالہ جات بھی دیکھیں بیرونی روابط کمانڈ لائن سافٹ ویئر فری پیکیج مینجمنٹ سسٹم جاوا اسکرپٹ جاوا اسکرپٹ پروگرامنگ ٹولز میں پروگرام کردہ مفت سافٹ ویئر آرٹسٹک لائسنس 2010 سافٹ ویئر کا استعمال کرتے ہوئے مائیکروسافٹ فری سافٹ ویئر سافٹ ویئر