javascript - Npx और npm के बीच अंतर?




(5)

मैंने अभी-अभी लर्निंग रिएक्ट शुरू किया है और फेसबुक निम्नलिखित तैयार-किए गए प्रोजेक्ट प्रदान करके शुरुआती सेटअप को आसान बनाने में मदद करता है।
Github पर फेसबुक अकाउंट से लिंक: https://github.com/facebook/create-react-app
अगर मुझे कंकाल प्रोजेक्ट स्थापित करना है तो मुझे कमांड लाइन में npx create-react-app my-app टाइप करना होगा।
मैं सोच रहा था कि Github में facebook अकाउंट के पास npx create-react-app my-app बजाय npm create-react-app my-app क्यों है?


पेश है npx: एक npm पैकेज धावक

NPM - पैकेजों का प्रबंधन करता है, लेकिन जीवन को आसान नहीं बनाता है।
NPX - नोड पैकेज निष्पादित करने के लिए एक उपकरण।

NPX NPM संस्करण 5.2+ साथ बंडल में आता है

NPM अपने आप में कोई पैकेज नहीं चलाता है। यह तथ्य के मामले में किसी भी पैकेज को नहीं चलाता है। यदि आप NPM का उपयोग करके एक पैकेज चलाना चाहते हैं, तो आपको उस पैकेज को अपनी package.json फ़ाइल में निर्दिष्ट करना होगा।

जब निष्पादनयोग्य एनपीएम पैकेज के माध्यम से स्थापित होते हैं, तो एनपीएम उन्हें लिंक करता है:

  1. स्थानीय इंस्टॉल में "लिंक" पर बनाया गया है ./node_modules/.bin/ निर्देशिका।
  2. वैश्विक इंस्टॉलेशन में लिनक्स पर या विंडोज पर %AppData%/npm पर वैश्विक bin/ निर्देशिका (जैसे /usr/local/bin ) से निर्मित "लिंक" हैं।

प्रलेखन आपको पढ़ना चाहिए

NPM:

एक निश्चित परियोजना पर स्थानीय स्तर पर एक पैकेज स्थापित कर सकते हैं:

npm install some-package

अब मान लेते हैं कि आप NodeJS को कमांड लाइन से उस पैकेज को निष्पादित करना चाहते हैं:

$ some-package

उपरोक्त विफल हो जाएगा। केवल विश्व स्तर पर स्थापित पैकेजों को केवल अपना नाम लिखकर निष्पादित किया जा सकता है।

इसे ठीक करने के लिए, और इसे चलाने के लिए, आपको स्थानीय पथ टाइप करना होगा:

$ ./node_modules/.bin/some-package

आप तकनीकी रूप से अपने packages.json को संपादित करके और संकुल में scripts पैकेज जोड़कर स्थानीय रूप से स्थापित पैकेज चला सकते हैं:

{
  "name": "whatever",
  "version": "1.0.0",
  "scripts": {
    "some-package": "some-package"
  }
}

फिर npm run-script (या npm run ) का उपयोग करके npm run-script npm run :

npm run some-package

NPX:

npx जाँच करेगा कि क्या <command> $PATH में मौजूद है, या स्थानीय प्रोजेक्ट बायनेरिज़ में, और इसे निष्पादित करें। इसलिए, उपरोक्त उदाहरण के लिए, यदि आप स्थानीय रूप से स्थापित पैकेज को निष्पादित करना चाहते हैं, तो some-package जो आपको करने की आवश्यकता है, वह है:

npx some-package

npx का एक और प्रमुख लाभ एक पैकेज को निष्पादित करने की क्षमता है जो पहले स्थापित नहीं था:

$ npx create-react-app my-app

उपरोक्त उदाहरण कमांड के द्वारा चलाए गए पथ के भीतर एक react ऐप बॉयलरप्लेट उत्पन्न करेगा, और यह सुनिश्चित करता है कि आप हमेशा जनरेटर या बिल्ड टूल के नवीनतम संस्करण का उपयोग किए बिना हर बार अपग्रेड करने के लिए उपयोग किए बिना।

संबंधित सवाल:

  1. नोड_मॉड्यूल्स में स्थानीय रूप से स्थापित पैकेज का उपयोग कैसे करें?
  2. एनपीएम: कैसे स्रोत ./ode_modules/.bin फ़ोल्डर?
  3. आप npm स्क्रिप्ट का उपयोग करके js फ़ाइल कैसे चलाते हैं?

NPX:

https://www.futurehosting.com/blog/npx-makes-life-easier-for-node-developers-plus-node-vulnerability-news/ :

वेब डेवलपर्स के पास अपने विकास मशीनों पर दर्जनों परियोजनाएं हो सकती हैं, और प्रत्येक परियोजना के पास npm स्थापित निर्भरताओं का अपना विशेष सेट है। कुछ साल पहले, ग्रंट या गुल्प जैसे सीएलआई अनुप्रयोगों से निपटने की सामान्य सलाह उन्हें प्रत्येक परियोजना में स्थानीय स्तर पर और वैश्विक स्तर पर स्थापित करने की थी ताकि उन्हें आसानी से कमांड लाइन से चलाया जा सके।

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

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

यही समस्या है npx हल। NPM 5.2 में शामिल एक नया टूल, npx एक छोटी सी उपयोगिता है जो एक प्रोजेक्ट के भीतर से कॉल करने पर सही एप्लिकेशन को चलाने के लिए पर्याप्त स्मार्ट है।

यदि आप mocha के प्रोजेक्ट-स्थानीय संस्करण को चलाना चाहते हैं, उदाहरण के लिए, आप प्रोजेक्ट के अंदर npx mocha चला सकते हैं और यह वही करेगा जो आप अपेक्षा करते हैं।

Npx का एक उपयोगी लाभ यह है कि यह npm संकुल को स्वतः स्थापित करेगा जो पहले से स्थापित नहीं है। इसलिए, जैसा कि उपकरण के निर्माता कैट मार्चैन बताते हैं, आप वैश्विक वातावरण को प्रदूषित करने वाले बेनी हिल से निपटने के लिए npx बेनी-हिल चला सकते हैं।

यदि आप स्पिन के लिए npx लेना चाहते हैं, तो npm के सबसे हाल के संस्करण में अपडेट करें।


यदि आप npm 5.1 या इससे पहले का उपयोग करते हैं, तो आप npx का उपयोग नहीं कर सकते। इसके बजाय, विश्व स्तर पर क्रिएट-रिएक्शन-ऐप इंस्टॉल करें:

npm इंस्टॉल -g create-react-app

अब आप चला सकते हैं:

create-reaction-app मेरा ऐप


यहाँ NPX एक्शन का एक उदाहरण है: npx cowsay hello

यदि आप अपने बैश टर्मिनल में टाइप करते हैं तो आपको परिणाम दिखाई देगा। इसका लाभ यह है कि npx ने अस्थायी रूप से गौशाला स्थापित की है। कोई पैकेज प्रदूषण नहीं है क्योंकि गायों को स्थायी रूप से स्थापित नहीं किया जाता है। यह एक बंद पैकेज के लिए बहुत अच्छा है जहाँ आप पैकेज प्रदूषण से बचना चाहते हैं।

जैसा कि अन्य उत्तरों में उल्लेख किया गया है, npx उन मामलों में भी बहुत उपयोगी है जहां (npm के साथ) पैकेज को स्थापित करने की आवश्यकता होती है, फिर चलने से पहले कॉन्फ़िगर किया गया। उदा। स्थापित करने के लिए npm का उपयोग करने के बजाय और फिर json.package फ़ाइल को कॉन्फ़िगर करें और फिर कॉन्फ़िगर की गई कमांड को कॉल करें इसके बजाय npx का उपयोग करें। एक वास्तविक उदाहरण: npx create-react-app my-app


npx एक npm पैकेज धावक है (x शायद eXecute के लिए खड़ा है)। विशिष्ट उपयोग अस्थायी रूप से या परीक्षण के लिए एक पैकेज को डाउनलोड करने और चलाने के लिए है।

create-react-app एक npm पैकेज है जो किसी प्रोजेक्ट के जीवनचक्र में केवल एक बार चलने की उम्मीद है। इसलिए, इसे एक ही चरण में स्थापित करने और चलाने के लिए npx का उपयोग करना पसंद किया जाता है।

जैसा कि मैन पेज https://www.npmjs.com/package/npx में बताया गया है, npx डिफ़ॉल्ट रूप से PATH में या node_modules / .bin से कमांड चला सकता है।

ध्यान दें: कुछ खुदाई के साथ, हम पा सकते हैं कि जावास्क्रिप्ट-फ़ाइल के लिए प्रतिक्रिया-अनुप्रयोग-बिंदु (संभवतः /usr/lib/node_modules/create-react-app/index.js लिनक्स सिस्टम पर जो नोड वातावरण में निष्पादित होते हैं। । यह केवल एक वैश्विक उपकरण है जो कुछ जांच करता है। वास्तविक सेटअप प्रतिक्रिया-लिपियों द्वारा किया जाता है, जिसका नवीनतम संस्करण परियोजना में स्थापित किया गया है। अधिक जानकारी के लिए https://github.com/facebook/create-react-app देखें।





npm