NPM पर यार्न का उपयोग कब करें? क्या अंतर हैं?


99

यार्न और एनपीएम के बीच अंतर क्या हैं ? इस प्रश्न को लिखने के समय मैं केवल इंटरनेट पर कुछ लेख दिखा सकता हूं जो दिखाते हैं कि यार्न इस तरह के एनपीएम कमांड के बराबर है ।

क्या उनके पास समान कार्यशीलता है (मुझे पता है कि यार्न स्थानीय कैशिंग करता है और ऐसा लगता है कि आपको केवल एक बार पैकेज डाउनलोड करने की आवश्यकता है) लेकिन इसके अलावा एनपीएम से यार्न पर जाने के लिए कोई लाभ है?


11
यह एक बुरा सवाल नहीं है और एक मूल्य के लायक नहीं है। उस ने कहा, इसे सही मायने में अच्छा प्रश्न बनाने के लिए इसे थोड़ा दूर करने की आवश्यकता है।
jedd.ahyoung

एक त्वरित गूगल जाता इस । मेरा मानना ​​है कि यह स्टैकऑवरफ्लो के लिए शायद बहुत व्यापक / रचनात्मक नहीं है और वैसे भी थोड़ा और अधिक शोध के साथ कर सकता है।
अरोरा ०१०१

1
@ Aurora0001 जब मैंने खोजा तो मैंने चीटशीट देखी लेकिन मेरे सवाल का जवाब नहीं है! मैं दोनों के बीच अंतर जानना चाहता हूं न कि आज्ञाओं के बीच अंतर। कृपया मेरे प्रश्न को पहले पढ़ें
आशा

4
@ आशा आपको और अधिक बारीकियों के लिए अपने प्रश्न को संपादित करना चाहिए, और जो आपने पहले ही शोध किया है उसे दिखाएं। आप किस तरह के अंतर ढूंढ रहे हैं? क्या आप यह जानने का प्रयास कर रहे हैं कि पुस्तकालयों को कैसे लागू किया जाता है? क्या आप यह पता लगाने का प्रयास कर रहे हैं कि वे समस्या के समीप आने में कैसे भिन्न होते हैं? यदि आप अपने प्रश्न को अधिक सटीक बनाते हैं, तो आप जो पूछ रहे हैं, उसके आधार पर यह अच्छा हो सकता है। (आप जो पूछ रहे हैं उसके आधार पर, जानकारी Google पर पहले से ही उपलब्ध हो सकती है।)
jedd.ahyoung

3
मजाकिया लोग आपको इसे Google को बताते हैं; मैंने पाया कि आपका प्रश्न Google पर जा रहा है ... स्टैकओवरफ़्लो में लोग अत्यधिक चीजों को नियमबद्ध करते हैं, जैसे कि यह उन्हें और अधिक महत्वपूर्ण बना देगा, मुझे लगता है।
jairhumberto

जवाबों:


67

अद्यतन: मार्च 2018 (थोड़ा देर से ...)

संस्करण 5 के बाद से, npm

  • एक 'लॉकफाइल' उत्पन्न package-lock.jsonकरता है जो आपके संपूर्ण निर्भरता के पेड़ को ठीक उसी तरह ठीक करता है जिस तरह से यार्न (या कोई अन्य) लॉकिंग तंत्र करता है,
  • एक उपकरण बनाया गया है
  • --save अब के लिए निहित है npm i
  • बेहतर नेटवर्क और कैश का उपयोग

NPM 5.7.0 आगे शुरू कीnpm ci केवल स्थापित करने संकुल से एक सतत एकीकरण वातावरण में और अधिक तेजी से निर्भरता स्थापित करने के लिए आदेश मिल गया में package-lock.json(यदि कोई त्रुटि रिपोर्टिंग package-lock.jsonऔर package.jsonसिंक्रनाइज़ नहीं कर रहे हैं)।

व्यक्तिगत रूप से , मैं अभी भी उपयोग करता हूं npm


मूल

मैं डॉक्स से सीधे उद्धृत करने के लिए तैयार हूं, लेकिन वे यह समझाने का एक बड़ा काम करते हैं कि क्यों, संक्षिप्त रूप से पर्याप्त है कि मैं विचारों को आगे संक्षेप में नहीं देखता हूं।

मोटे तौर पर:

  1. आपको हमेशा पता है कि आपको हर विकास मशीन पर एक ही चीज़ मिल रही है

  2. यह उन परिचालनों को लंबित npmकरता है जो नहीं करते हैं, और

  3. यह नेटवर्क का अधिक कुशल उपयोग करता है।

  4. यह अन्य सिस्टम संसाधनों (जैसे RAM) का अधिक कुशल उपयोग कर सकता है ।

इसके साथ लोगों के उत्पादन के अनुभव क्या हैं? कौन जानता है, यह आम जनता के लिए एक शिशु है।

येहुदा काट्ज़ से टीएल; डीआर :

गेट-गो से, यार्न लॉकफाइल गारंटी देता है कि एक ही रिपॉजिटरी पर एक ही पैकेज में बार-बार चलने वाले यार्न।

दूसरा, यार्न ठंडे कैश के साथ, लेकिन विशेष रूप से गर्म कैश के साथ अच्छा प्रदर्शन करने का प्रयास करता है।

अंत में, यार्न सुरक्षा को एक मुख्य मूल्य बनाता है।

अच्छा ब्लॉग पोस्ट

गैंट लाबोर्डे द्वारा " एनपीएम बनाम यार्न चीट शीट "

परियोजना से थोड़ा लंबा संस्करण :

तेज़: यार्न हर पैकेज को डाउनलोड करता है ताकि इसे फिर से कभी भी ज़रूरत न पड़े। यह संसाधन उपयोग को अधिकतम करने के लिए ऑपरेशनों को भी समानांतर करता है ताकि इंस्टॉल समय पहले से कहीं अधिक तेज हो।

विश्वसनीय: एक विस्तृत, लेकिन संक्षिप्त, लॉकफ़ाइल प्रारूप और इंस्टॉल के लिए एक नियतात्मक एल्गोरिथ्म का उपयोग करना, यार्न यह गारंटी देने में सक्षम है कि एक सिस्टम पर काम करने वाला इंस्टॉल किसी अन्य सिस्टम पर बिल्कुल उसी तरह काम करेगा।

सुरक्षित: यार्न अपने कोड को निष्पादित करने से पहले हर स्थापित पैकेज की अखंडता को सत्यापित करने के लिए चेकसम का उपयोग करता है।

और README.md से :

  • ऑफलाइन मोड: यदि आपने पहले एक पैकेज स्थापित किया है, तो आप इसे बिना किसी इंटरनेट कनेक्शन के फिर से स्थापित कर सकते हैं।
  • नियतात्मक: एक ही निर्भरता स्थापित आदेश की परवाह किए बिना हर मशीन में एक ही सटीक तरीके से स्थापित किया जाएगा।
  • नेटवर्क प्रदर्शन: यार्न कुशलता से अनुरोधों को कतारबद्ध करता है और नेटवर्क उपयोग को अधिकतम करने के लिए अनुरोधों को झरने से बचाता है।
  • मल्टीपल रजिस्ट्रियां: किसी भी पैकेज को npm या Bower से इंस्टॉल करें और अपने पैकेज वर्कफ़्लो को समान रखें।
  • नेटवर्क रेजिलिएंस: एक एकल अनुरोध विफल होने से इंस्टॉल विफल होने का कारण नहीं होगा। असफलता पर अनुरोध वापस लिया जाता है।
  • फ्लैट मोड: डुप्लिकेट बनाने से बचने के लिए निर्भरता के बेमेल संस्करणों को एक ही संस्करण में हल करें।
  • अधिक इमोजीस। 🐈

क्या आप मुझे बता सकते हैं कि क्या यार्न एनपीएम वी 3 की तरह निर्भरता रिज़ॉल्यूशन करता है ? मैं समझता हूं कि एक --flatविकल्प है जो एक वास्तविक फ्लैट संरचना को मजबूर करता है जहां प्रत्येक निर्भरता के केवल एक संस्करण को स्थापित करने की अनुमति है, लेकिन इस पर डिफ़ॉल्ट व्यवहार क्या है? धन्यवाद।
दिमित्रीस करागियानिस

2
अधिक इमोजी: बिल्ली:
ह्यूई टैन

7
बहुत बढ़िया जवाब। मुझे आश्चर्य है कि अगर उन्होंने npm को फोर्किंग और रीनेम करने और बदलने और बदलने से पहले योगदान करने की कोशिश की install -g
गार्डनर बिकफोर्ड

बहुत अच्छी पोस्ट scotch.io/tutorials/…
अक्षय विजय जैन

2

npm :

  1. जावास्क्रिप्ट के लिए पैकेज प्रबंधक। npm npm इकोसिस्टम का कमांड-लाइन इंटरफ़ेस है। यह युद्ध-परीक्षण, आश्चर्यजनक रूप से लचीला, और हर दिन सैकड़ों हज़ारों जावास्क्रिप्ट डेवलपर्स द्वारा उपयोग किया जाता है।
  2. एनपीएम एक सही लॉक फ़ाइल बनाता है जबकि यार्न लॉक फ़ाइल कुछ मामलों में भ्रष्ट हो सकती है और यार्न-टूल्स के साथ तय की जानी चाहिए

यार्न :

  1. जावास्क्रिप्ट के लिए एक नया पैकेज प्रबंधक। यार्न हर पैकेज को डाउनलोड करता है ताकि इसे फिर से कभी भी ज़रूरत न पड़े। यह संसाधन उपयोग को अधिकतम करने के लिए ऑपरेशनों को भी समानांतर करता है ताकि इंस्टॉल समय पहले से कहीं अधिक तेज हो।
  2. यार्न एक पासवर्ड के साथ लॉगिन का समर्थन नहीं करता (जबकि एनपीएम करता है)

1
किस तरह के लोगिन?
रिच स्टोन

2

PNPM क्या है?

pnpmएक मॉड्यूल के एक संस्करण को केवल एक बार डिस्क पर सहेजने के लिए हार्ड लिंक और सिमलिंक का उपयोग करता है। उदाहरण के लिए npm या यार्न का उपयोग करते समय, यदि आपके पास लाकैश के एक ही संस्करण का उपयोग करके 100 परियोजनाएं हैं, तो आपके पास डिस्क पर लताश की 100 प्रतियाँ होंगी। Pnpm के साथ, लॉकेट को डिस्क पर एक ही स्थान पर सहेजा जाएगा और एक हार्ड लिंक इसे नोड_मॉड्यूल्स में डाल देगा जहां इसे स्थापित किया जाना चाहिए।

परिणामस्वरूप, आप अपने डिस्क पर गीगाबाइट की जगह बचाते हैं और आपके पास बहुत तेज़ इंस्टॉलेशन होते हैं! यदि आप उस अद्वितीय नोड_मॉड्यूल्स संरचना के बारे में अधिक जानकारी चाहते हैं जो pnpm बनाता है और यह Node.js पारिस्थितिकी तंत्र के साथ ठीक काम क्यों करता है, तो इस छोटे से लेख को पढ़ें: हमें pnpm का उपयोग क्यों करना चाहिए?

PNPM कैसे स्थापित करें?

npm install -g pnpm

PNPM का उपयोग करके npm पैकेज कैसे स्थापित करें?

pnpm install -g typescript // or your desired package

के लाभ PNPMसे अधिक YarnऔरNPM

यहां पर प्रगति-बार दिखा रहा है कि स्थापना का समय क्या है NPM, YARNऔर PNPM(छोटा-बार बेहतर है) यहां छवि विवरण दर्ज करें

पूर्ण चेक बेंचमार्क के लिए क्लिक करें

अधिक जानकारी के लिए, https://www.npmjs.com/package/pnpm पर जाएं


1

जब आप यार्न का उपयोग करके एक पैकेज स्थापित करते हैं (यार्न ऐड पैकेजेन का उपयोग करके), यह आपकी डिस्क पर पैकेज को रखता है । अगली स्थापना के दौरान, रजिस्ट्री से टारबॉल प्राप्त करने के लिए HTTP अनुरोध भेजने के बजाय इस पैकेज का उपयोग किया जाएगा।

यार्न एक आसान लाइसेंस चेकर के साथ आता है , जो आपके द्वारा निर्भर सभी मॉड्यूल के लाइसेंस की जांच करने के मामले में वास्तव में शक्तिशाली बन सकता है।

यदि आप मालिकाना सॉफ्टवेयर पर काम कर रहे हैं, तो यह वास्तव में मायने नहीं रखता है कि आप किसका उपयोग करते हैं। Npm के साथ, आप npm-संकोwrap.js का उपयोग कर सकते हैं, जबकि आप यार्न के साथ यार्न का उपयोग कर सकते हैं।

अधिक जानकारी के लिए कृपया निम्नलिखित ब्लॉग पढ़ें

https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/


1

शुरुआती लोगों के लिए एक बेहतर अवलोकन देने की कोशिश कर रहा है।

npm ऐतिहासिक रूप से (2010) जावास्क्रिप्ट के लिए सबसे लोकप्रिय पैकेज मैनेजर रहा है। यदि आप इसे अपने प्रोजेक्ट की निर्भरता के प्रबंधन के लिए उपयोग करना चाहते हैं, तो आप निम्न कमांड टाइप कर सकते हैं:

npm init

यह एक package.jsonफ़ाइल उत्पन्न करेगा । इसमें परियोजना की सभी निर्भरताएँ शामिल हैं।

फिर

npm install

एक निर्देशिका बनाएगा node_modulesऔर उसके अंदर निर्भरताएं (जिसे आपने package.jsonफ़ाइल में जोड़ा है ) डाउनलोड करेगा।

यह एक package-lock.jsonफाइल भी बनाएगा । इस फ़ाइल का उपयोग निर्भरता के पेड़ का वर्णन करने के लिए किया जाता है जो उत्पन्न हुआ था। यह विकासात्मक रूप से समान निर्भरता को स्थापित करने की अनुमति देता है। उदाहरण के लिए, आप एक वी 2 के लिए एक निर्भरता को अपग्रेड करने वाले वी 2 और फिर वी 3 की कल्पना कर सकते हैं जबकि एक दूसरे को सीधे वी 3 में अपग्रेड कर सकते हैं।

एनपीएम एक गैर-निर्धारक तरीके से निर्भरता स्थापित करता है जिसका अर्थ है कि दो विकासकर्ता एक अलग node_modulesनिर्देशिका हो सकते हैं जिसके परिणामस्वरूप विभिन्न व्यवहार हो सकते हैं । ** npm को फरवरी 2018 में उदाहरण के लिए खराब प्रतिष्ठा का सामना करना पड़ा है: संस्करण 5.7.0 में एक समस्या का पता चला था जिसमें लिनक्स सिस्टम पर sudo npm चलाने से सिस्टम फ़ाइलों का स्वामित्व बदल जाएगा, जो स्थायी रूप से ऑपरेटिंग सिस्टम को तोड़ देगा।

उन समस्याओं और दूसरों को हल करने के लिए फेसबुक एक नया पैकेज प्रबंधक शुरू की : (2016) यार्न एक तेजी से, अधिक सुरक्षित रूप से, और अधिक मज़बूती प्रबंधक जावास्क्रिप्ट के लिए पैकेज।

आप टाइप करके किसी प्रोजेक्ट में यार्न जोड़ सकते हैं :

yarn init

यह एक package.jsonफाइल बनाएगा । उसके बाद, निर्भरताएँ स्थापित करें:

yarn install

एक फ़ोल्डर node_modulesउत्पन्न किया जाएगा। यार्न एक फ़ाइल भी उत्पन्न करेगा जिसे कहा जाता है yarn.lock। यह फ़ाइल उसी उद्देश्य को पूरा करती है, package-lock.jsonलेकिन इसके बजाय एक नियतात्मक और विश्वसनीय एल्गोरिथ्म का उपयोग करके निर्माण किया जाता है जिससे इस प्रकार निरंतर निर्माण होता है।

यदि आपने npm के साथ एक परियोजना शुरू की है , तो आप वास्तव में आसानी से यार्न की ओर पलायन कर सकते हैं। यार्न उसी का उपभोग करेगा package.json। अधिक जानकारी के लिए npm से माइग्रेट करना देखें ।

हालांकि, NPM प्रत्येक नए रिलीज के साथ सुधार किया गया है और कुछ परियोजनाओं अभी भी उपयोग करता NPM से अधिक यार्न


1

@Msanford द्वारा दिए गए उत्तर में लगभग सब कुछ शामिल है, हालांकि, मुझे सुरक्षा (OWASP की ज्ञात कमजोरियाँ) भाग याद आ रहा है।

धागा

आप उनका उपयोग करके जाँच कर सकते हैं yarn audit, हालाँकि, आप उन्हें ठीक नहीं कर सकते। यह अभी भी एक GitHub ( https://github.com/yarnpkg/yarn/issues/7075 ) पर एक खुला मुद्दा है ।

NPM

आप उपयोग कर सकते हैं npm audit fix, इसलिए उनमें से कुछ आप अपने आप से ठीक कर सकते हैं।

दोनों, अर्थात् npm auditऔर yarn auditअपने स्वयं के निरंतर एकीकरण उपकरण हैं। ये क्रमशः https://github.com/IBM/audit-ci (प्रयुक्त, बढ़िया काम करता है!) और https://yarnpkg.com/package/audit-ci (प्रयुक्त नहीं) हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.