Npm
एन. पी. एम. जावास्क्रिप्ट प्रोग्रामिंग भाषा के लिए एक पैकेज प्रबंधक है जिसे एन. पी. एम., आई. एन. सी. द्वारा बनाए रखा जाता है। एन. पी. एम. जावास्क्रिप्ट रनटाइम वातावरण Node.js के लिए डिफ़ॉल्ट पैकेज प्रबंधक है और इसे Node.js इंस्टॉलर में एक अनुशंसित सुविधा के रूप में शामिल किया गया है। इसमें एक कमांड लाइन क्लाइंट होता है, जिसे एन. पी. एम. भी कहा जाता है, और सार्वजनिक और भुगतान किए गए निजी पैकेजों का एक ऑनलाइन डेटाबेस होता है, जिसे एन. पी. एम. रजिस्ट्री कहा जाता है। रजिस्ट्री को ग्राहक के माध्यम से एक्सेस किया जाता है, और उपलब्ध पैकेजों को एन. पी. एम. वेबसाइट के माध्यम से देखा और खोजा जा सकता है। पैकेज प्रबंधक और रजिस्ट्री का प्रबंधन एन. पी. एम., आई. एन. सी. द्वारा किया जाता है। इतिहास एन. पी. एम. को आइज़ैक जेड. श्लुएटर द्वारा "मॉड्यूल पैकेजिंग को बहुत अच्छी तरह से देखने" के परिणामस्वरूप और पी. ई. ए. आर. (पी. एच. पी.) और सी. पी. ए. एन. (पर्ल) जैसी अन्य समान परियोजनाओं से प्रेरणा के साथ विकसित किया गया था। एन. पी. एम. पी. एम. के लिए एक जावास्क्रिप्ट प्रतिस्थापन है, जो एक शेल स्क्रिप्ट है। जबकि "एन. पी. एम". को आमतौर पर "नोड पैकेज मैनेजर" के लिए एक संक्षिप्त नाम के रूप में समझा जाता है, यह आधिकारिक तौर पर "एन. पी. एम. एक संक्षिप्त नाम नहीं है" के लिए खड़ा है। उपयोग एन. पी. एम. उन पैकेजों का प्रबंधन कर सकता है जो किसी विशेष परियोजना की स्थानीय निर्भरता के साथ-साथ विश्व स्तर पर स्थापित जावास्क्रिप्ट उपकरण हैं। जब किसी स्थानीय परियोजना के लिए निर्भरता प्रबंधक के रूप में उपयोग किया जाता है, तो एन. पी. एम. एक आदेश में, package.json फ़ाइल के माध्यम से किसी परियोजना की सभी निर्भरताओं को स्थापित कर सकता है। package.json फाइल में, प्रत्येक निर्भरता शब्दार्थ संस्करण योजना का उपयोग करके वैध संस्करणों की एक श्रृंखला निर्दिष्ट कर सकती है, जिससे डेवलपर्स अपने पैकेजों को स्वचालित रूप से अद्यतन कर सकते हैं और साथ ही साथ अवांछित ब्रेकिंग परिवर्तनों से बच सकते हैं। एन. पी. एम. डेवलपर्स को अपने पैकेजों को एक विशेष संस्करण के साथ टैग करने के लिए संस्करण-बंपिंग उपकरण भी प्रदान करता है। एन. पी. एम. package-lock.json फाइल भी प्रदान करता है जिसमें package.json में शब्दार्थ संस्करण का मूल्यांकन करने के बाद परियोजना द्वारा उपयोग किए गए सटीक संस्करण की प्रविष्टि होती है। क्लाइंट एन. पी. एम. का कमांड-लाइन इंटरफेस क्लाइंट उपयोगकर्ताओं को रजिस्ट्री में उपलब्ध जावास्क्रिप्ट मॉड्यूल का उपभोग और वितरण करने की अनुमति देता है। फरवरी 2018 में, संस्करण 5.7 में एक समस्या का पता चला था जिसमें लिनक्स सिस्टम पर सुडो एन. पी. एम. चलाने से सिस्टम फ़ाइलों का स्वामित्व बदल जाएगा, जिससे ऑपरेटिंग सिस्टम स्थायी रूप से टूट जाएगा। एन. पी. एम. संस्करण 6 में, लेखापरीक्षा सुविधा को डेवलपर्स को स्थापित पैकेजों में सुरक्षा कमजोरियों की पहचान करने और उन्हें ठीक करने में मदद करने के लिए पेश किया गया था। सुरक्षा कमजोरियों का स्रोत नोड सुरक्षा मंच (एन. एस. पी.) पर पाई गई रिपोर्टों से लिया गया था और एन. पी. एम. द्वारा एन. एस. पी. के अधिग्रहण के बाद से एन. पी. एम. के साथ एकीकृत किया गया है। रजिस्ट्री में रजिस्ट्री पैकेज एस्मेस्क्रिप्ट मॉड्यूल (ई. एस. एम.) या कॉमन. जे. एस. प्रारूप में होते हैं और इसमें जे. एस. ओ. एन. प्रारूप में एक मेटाडेटा फ़ाइल शामिल होती है। 13 लाख से अधिक पैकेज मुख्य एन. पी. एम. रजिस्ट्री में उपलब्ध हैं। रजिस्ट्री में जमा करने के लिए कोई जांच प्रक्रिया नहीं है, जिसका अर्थ है कि वहाँ पाए गए पैकेज संभावित रूप से निम्न गुणवत्ता, असुरक्षित या दुर्भावनापूर्ण हो सकते हैं। इसके बजाय, एन. पी. एम. पैकेज को हटाने के लिए उपयोगकर्ता की रिपोर्ट पर निर्भर करता है यदि वे कम गुणवत्ता, असुरक्षित या दुर्भावनापूर्ण होने के कारण नीतियों का उल्लंघन करते हैं। एन. पी. एम. पैकेज की गुणवत्ता का आकलन करने में डेवलपर्स की सहायता के लिए डाउनलोड की संख्या और निर्भर पैकेज की संख्या सहित आंकड़ों को उजागर करता है। आंतरिक रूप से एन. पी. एम. सार्वजनिक रूप से उपलब्ध डेटा का प्रबंधन करने के लिए एन. ओ. एस. क्यू. एल. काउच डी. बी. पर निर्भर करता है। सुरक्षा और व्यवधान निर्भरता श्रृंखला के मुद्दे मार्च 2016 में, लेफ्ट-पैड नामक एक पैकेज के बाद एन. पी. एम. ने प्रेस का ध्यान आकर्षित किया, जिस पर कई लोकप्रिय जावास्क्रिप्ट पैकेज निर्भर थे, एक स्व-शिक्षित सॉफ्टवेयर इंजीनियर अज़ेर कोकुलु और किक के बीच एक नामकरण विवाद के परिणामस्वरूप अप्रकाशित था। हालाँकि पैकेज को तीन घंटे बाद पुनः प्रकाशित किया गया था, लेकिन इसने व्यापक व्यवधान पैदा किया, जिससे एन. पी. एम. ने भविष्य में इसी तरह की घटना को रोकने के लिए प्रकाशन रद्द करने के संबंध में अपनी नीतियों को बदल दिया। अप्रैल 2020 में, इस-प्रॉमिस नामक एक छोटे से पैकेज के परिणामस्वरूप कई बड़े और महत्वपूर्ण अनुप्रयोगों की निर्भरता के कारण दुनिया भर में सर्वर रहित अनुप्रयोगों और परिनियोजन में रुकावट आई। समझौता किए गए और विघटनकारी रूप से संपादित पैकेज जुलाई 2018 में, लोकप्रिय एस्लिंट-स्कोप पैकेज के एक अनुरक्षक की एन. पी. एम. साख से समझौता किया गया था जिसके परिणामस्वरूप एस्लिंट-स्कोप, संस्करण 3.7.2 का दुर्भावनापूर्ण विमोचन हुआ था। दुर्भावनापूर्ण कोड ने एस्लिंट-स्कोप चलाने वाली मशीन के एन. पी. एम. क्रेडेंशियल्स की नकल की और उन्हें हमलावर को अपलोड किया। नवंबर 2018 में, यह पता चला कि लोकप्रिय पैकेज इवेंट-स्ट्रीम के संस्करण 3.3.6 पर निर्भरता के रूप में एक दुर्भावनापूर्ण पैकेज जोड़ा गया था। दुर्भावनापूर्ण पैकेज, जिसे फ्लैटमैप-स्ट्रीम कहा जाता है, में एक एन्क्रिप्टेड पेलोड था जो कुछ अनुप्रयोगों से बिटक्वाइन चुरा लेता था। एन. पी. एम. प्रशासकों ने अपमानजनक पैकेज को हटा दिया। जनवरी 2022 में, लोकप्रिय पैकेज रंगों के रखरखावकर्ता ने एक अनंत लूप में कचरा पाठ को छापने वाले परिवर्तनों को आगे बढ़ाया। रखरखावकर्ता ने एक अन्य लोकप्रिय पैकेज, नकली और एन. पी. एम. पर इसके पैकेज के भंडार को भी साफ कर दिया, और इसे एक आर. ई. डी. एम. ई. से बदल दिया जिसमें लिखा था, "वास्तव में आरोन स्वार्ट्ज का क्या हुआ?" मार्च 2022 में, डेवलपर ब्रैंडन नोजाकी मिलर ने पैकेज नोड-आई. पी. सी. का एक संस्करण जारी किया जिसमें दुर्भावनापूर्ण कोड था जो यूक्रेन पर रूसी आक्रमण के विरोध में बेलारूसी और रूसी आई. पी. पतों वाले उपयोगकर्ताओं की फ़ाइलों को हटा देगा। Vue.js, जो निर्भरता के रूप में नोड-आई. पी. सी. का उपयोग करता है, ने अपनी निर्भरताओं को एक सुरक्षित संस्करण में पिन नहीं किया, जिसका अर्थ है कि Vue.js के कुछ उपयोगकर्ता दुर्भावनापूर्ण पैकेज से प्रभावित हो गए यदि निर्भरता को नवीनतम पैकेज के रूप में लाया गया था। प्रभावित निर्भरता यूनिटी हब के संस्करण 3.1 में भी संक्षिप्त रूप से मौजूद थी; हालाँकि, इस मुद्दे को हटाने के लिए उसी दिन एक हॉटफिक्स जारी किया गया था। वैकल्पिक मॉड्यूलर जावास्क्रिप्ट स्थापित करने के लिए एन. पी. एम. के कई ओपन-सोर्स विकल्प हैं, जिनमें आई. डी., पी. एन. पी. एम., एन. पी. एम. डी. और यार्न शामिल हैं, जिनमें से अंतिम अक्टूबर 2016 में फेसबुक द्वारा जारी किया गया था। वे सभी सार्वजनिक एन. पी. एम. रजिस्ट्री के साथ संगत हैं और डिफ़ॉल्ट रूप से इसका उपयोग करते हैं, लेकिन विभिन्न ग्राहक-पक्ष अनुभव प्रदान करते हैं, जो आमतौर पर एन. पी. एम. ग्राहक की तुलना में प्रदर्शन और निर्धारण में सुधार पर केंद्रित होते हैं। सॉफ्टवेयर रिपॉजिटरी संदर्भ भी देखें बाहरी लिंक कमांड-लाइन सॉफ्टवेयर फ्री पैकेज मैनेजमेंट सिस्टम फ्री सॉफ्टवेयर प्रोग्राम्ड इन जावास्क्रिप्ट जावास्क्रिप्ट प्रोग्रामिंग टूल्स माइक्रोसॉफ्ट फ्री सॉफ्टवेयर सॉफ्टवेयर आर्टिस्टिक लाइसेंस 2010 सॉफ्टवेयर का उपयोग करते हुए