Npm संकुल पर "at" (@) उपसर्ग का क्या अर्थ है?


294

में कोणीय घटक रूटर प्रलेखन मैं सिर्फ एक NPM आदेश से अधिक ठोकर खाई मैंने पहले कभी नहीं देखा है और मुझे समझ नहीं आता क्या हो रहा है:

npm install @angular/router --save

का अर्थ क्या है @angular/router?

क्या पूरे स्ट्रिंग एक पैकेज का नाम है? लेकिन तब मुझे npmjs.com पर खोज का उपयोग करने पर वह पैकेज नहीं मिला । और कमांडलाइन खोज में भी ऐसा कोई पैकेज नहीं है:

npm search @angular/router
:No match found for "@angular/router"

तो क्या @angular/npm में किसी प्रकार का उपसर्ग तंत्र है? और यह कैसे काम करता है?



3
@trailingslash यह एक महान जवाब है! (टिप्पणी नहीं होनी चाहिए।)
लिमिटेड प्रायश्चित

जवाबों:


324

यह एनपीएम की एक नई विशेषता है जिसे 'स्कोप्ड पैकेज' कहा जाता है, जो एनपीएम पैकेजों को प्रभावी रूप से नामांकित करने की अनुमति देता है। एनपीएम पर प्रत्येक उपयोगकर्ता और संगठन का अपना दायरा है, और वे केवल ऐसे लोग हैं जो पैकेज जोड़ सकते हैं।

यह कई कारणों से उपयोगी है:

  • यह संगठनों को यह स्पष्ट करने की अनुमति देता है कि कौन से पैकेज 'आधिकारिक' हैं और कौन से नहीं हैं।
    • उदाहरण के लिए, यदि किसी पैकेज में गुंजाइश है @angular, तो आप जानते हैं कि यह कोणीय कोर टीम द्वारा प्रकाशित किया गया था।
  • पैकेज का नाम केवल उस दायरे के लिए विशिष्ट होना चाहिए जो इसमें प्रकाशित हुआ है, न कि पूरी रजिस्ट्री।
    • उदाहरण के लिए, पैकेज का नाम httpपहले से ही मुख्य भंडार में लिया गया है, लेकिन कोणीय भी सक्षम है @angular/http

कारण यह है कि scoped संकुल सार्वजनिक खोज में दिखाई नहीं देता है, क्योंकि उनमें से बहुत सारे निजी पैकेज NPM की भुगतान सेवाओं का उपयोग करके संगठनों द्वारा बनाए गए हैं, और वे खोज को खोलने में सहज नहीं हैं जब तक कि वे पूरी तरह से निश्चित नहीं हो सकते कि वे नहीं हैं किसी भी चीज को सार्वजनिक करने के लिए जो सार्वजनिक नहीं होनी चाहिए - कानूनी दृष्टिकोण से, यह काफी समझ में आता है।

अधिक जानकारी के लिए, एनपीएम डॉक्स और कोणीय डॉक्स देखें

संपादित करें: ऐसा प्रतीत होता है कि सार्वजनिक स्कॉप्ड पैकेज अब खोज में ठीक से दिखाई देते हैं!


68

मूल रूप से npm पर दो प्रकार के मॉड्यूल हैं, वे हैं -

  • वैश्विक मॉड्यूल - ये ऐसे मॉड्यूल हैं जो आज मौजूद नामकरण सम्मेलन का अनुसरण करते हैं। आप require('foo')और वहाँ बहुत आनन्दित है। वे npm install XYZकमांड के माध्यम से एक या अधिक लोगों के स्वामित्व में हैं ।

  • स्कोप्ड मॉड्यूल - ये नए मॉड्यूल हैं जो संगठन नाम के तहत "स्कोप" होते हैं @जो संगठन के नाम, स्लैश और अंत में पैकेज नाम, जैसे, से शुरू होता है @someOrgScope/packagename। स्कोप्स संबंधित पैकेज को एक साथ समूहीकृत करने का एक तरीका है, और npm पैकेज के व्यवहार के तरीके के बारे में कुछ चीजों को भी प्रभावित करते हैं।

एक स्कोप्ड पैकेज इसे नाम से संदर्भित करके स्थापित किया गया है, पूर्व में @ -symbol द्वारा, npm स्थापित में:

npm install @myorg/mypackage

यह सभी देखें

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