Npm इंस्टॉल और npm रन बिल्ड में क्या अंतर है?


113

बीच क्या अंतर है npm installऔर npm run build?

मैंने अपनी परियोजना में देखा है कि कभी-कभी एनपीएम विफल हो npm installजाता है जब प्रदर्शन किया जाता है, लेकिन, दौड़ने पर npm run build, यह ठीक काम करता है।

इन दो लक्ष्यों के आंतरिक कामकाज कैसे installऔर run buildअलग - अलग हैं?


1
अब तक का स्वीकृत जवाब बहस योग्य है। मुझे लगता है कि एमकेपी और सीटीएस_एई के उत्तर इस समय अधिक प्रासंगिक हैं। उचित सम्मान के साथ, यह मध्यस्थ और / या जिसने यह प्रश्न पूछा है, के नोटिस में आना चाहिए।
सुहास चिक्कन्ना

जवाबों:


69

npm installnode_modules/आप जिस नोड प्रोजेक्ट पर काम कर रहे हैं, उसके लिए निर्भरता को निर्देशिका में स्थापित करता है । आप installकिसी अन्य नोड.जेएस परियोजना (मॉड्यूल) पर कॉल कर सकते हैं , इसे अपनी परियोजना के लिए निर्भरता के रूप में स्थापित करने के लिए।

npm run buildके लिए एक उपनाम है npm build, और यह तब तक कुछ नहीं करता है जब तक आप निर्दिष्ट नहीं करते हैं कि आपके पैकेज में क्या "निर्माण" होता है। यह आपको किसी अन्य परियोजना में उपयोग किए जाने से पहले अपनी परियोजना के लिए कोई आवश्यक भवन / प्रस्तुत करने का कार्य करने देता है।

buildबिल्ड के लिए प्रलेखन के अनुसार linkऔर installआदेशों द्वारा बुलाया जाता है :

यह एनपीएम लिंक और एनपीएम इंस्टॉल द्वारा प्लंबिंग कमांड है।


37
Downvoted के बाद से @MKP कहते हैं npm run buildऔर npm buildकर रहे हैं नहीं एक ही। अगर आप साबित कर सकते हैं कि वे वास्तव में एक ही हैं या अपना उत्तर सही करेंगे तो मैं फिर से उठूंगा।
हेंडी इरावन

नीचे दिए गए लिंक के सही उत्तर का उल्लेख करने के बाद, मुझे भी लगता है कि npm buildऔर npm run buildसमान नहीं हैं। IMHO, शायद @churro से उपरोक्त उत्तर को ठीक करने की आवश्यकता है। अगर मैं गलत हूं कृपया मुझे सही। stackoverflow.com/questions/29939697/…
सुहास चिक्कन्ना

1
दुर्भाग्य से @HendyIrawan सही है और वे एक ही कमांड नहीं हैं, यह एक अत्यधिक मतदान वाला उत्तर है जो कुछ लोगों को भ्रमित कर सकता है। मेरा मानना ​​है कि इसे अपडेट किया जाना चाहिए।
rdarioduarte

79

2019 में एनपीएम

npm buildअब मौजूद नहीं है। आपको npm run buildअभी कॉल करना होगा । नीचे अधिक जानकारी।

TLDR;

npm install: निर्भरता स्थापित करता है, फिर क्षेत्र installसे कॉल करता है package.json scripts

npm run build: मैदान से निर्माण क्षेत्र चलाता है package.json scripts


एनपीएम लिपियों का क्षेत्र

https://docs.npmjs.com/misc/scripts

कई चीजें हैं जिन्हें आप एनपीएम package.jsonस्क्रिप्ट के क्षेत्र में डाल सकते हैं । स्क्रिप्ट के जीवनचक्र के ऊपर और ऊपर दिए गए दस्तावेज़ीकरण लिंक को देखें - अधिकांश में पूर्व और बाद के हुक होते हैं जिन्हें आप इंस्टॉल, प्रकाशित, अनइंस्टॉल, परीक्षण, प्रारंभ, रोकना, सिकोड़ना, संस्करण से पहले स्क्रिप्ट चला सकते हैं।


चीजें जटिल करने के लिए

  • npm install जैसा है वैसा नहीं है npm run install
  • npm installpackage.jsonनिर्भरता स्थापित करता है, फिर चलाता हैpackage.json scripts.install
    • ( npm run installनिर्भरता स्थापित होने के बाद अनिवार्य रूप से कॉल ।
  • npm run installकेवल चलाता है package.json scripts.install, यह निर्भरता स्थापित नहीं करेगा
  • npm buildएक मान्य कमांड के रूप में इस्तेमाल किया जाता है (जैसा ही होना चाहिए npm run build) लेकिन यह अब नहीं है; यह अब एक आंतरिक कमांड है। यदि आप इसे चलाते हैं तो आपको मिलेगा: npm WARN build npm build called with no arguments. Did you mean to npm run-script build?आप प्रलेखन पर अधिक पढ़ सकते हैं: https://docs.npmjs.com/cli/build

5
+1 लेकिन यह कहना भ्रम की स्थिति है कि npm buildअब मौजूद नहीं है। यह अभी भी उस अर्थ में बाहर निकलता है जो इसे npm के लिए जाना जाता है / विशेष है, क्योंकि यह नीचे दी गई चेतावनी के साथ प्रतिक्रिया करता है। अनिवार्य रूप से यह अब कुछ नहीं करता है। एक अन्य प्रश्न के इस उत्तर ने npm buildबनाम पर सबसे छोटा सारांश दिया npm run build
bluenote10

1
दूसरे शब्दों में, यार्न की जांच करने का समय?
लूज पर मूस

44

मुख्य अंतर ::

npm install एक npm cli-command है जो पूर्वनिर्धारित चीज़ को करता है, जैसा कि चुरो द्वारा लिखा गया है, पैकेज के अंदर निर्दिष्ट निर्भरताएँ स्थापित करने के लिए। json

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

नोट करने के लिए पोंट्स ::

1) एक और बात, npm build और npm run buildदो अलग-अलग चीजें npm buildहैं जो चुरू द्वारा लिखी गई हैं, लेकिन npm run buildअंदर लिखे गए कस्टम काम करेंगेpackage.json

2) और npm buildऔर npm run buildही नहीं हैं। मेरा मतलब है, आप कस्टम बिल्ड ( npm run build) स्क्रिप्ट के अंदर कुछ बात निर्दिष्ट नहीं कर सकते हैं और npm buildऐसा ही करने की उम्मीद करते हैं। अपने में सत्यापित करने के लिए निम्न चीज़ आज़माएं package.json:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build":"echo 'hello build'"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {},
  "dependencies": {}
}

और एक npm run build- npm buildएक करके और आप अंतर देखेंगे। आदेशों के बारे में अधिक जानकारी के लिए कृपया npm प्रलेखन का पालन करें ।

चीयर्स !!


11
के बजाय "चलाने का प्रयास इस", मैं अगर आप और अधिक विस्तार क्या बीच का अंतर है से समझाने की सराहना करेंगे, npm run buildऔर npm build। ठीक है तो वे समान नहीं हैं, किस तरह से? तो @ चुरू का जवाब गलत है?
हेंडी इरावन

7
हाँ, npm buildएक रहस्य क्या है। यह जानकर अच्छा लगेगा। जहां तक ​​मैं बता सकता हूं, " npm buildचुरू द्वारा लिखित रूप में करेंगे" सच नहीं है। चुरो ने कहा कि यह वही करेगा package.jsonजो buildकमांड के लिए निर्दिष्ट है (जैसा scriptsकि मुझे लगता है कि अनुभाग में परिभाषित किया गया है )। लेकिन यह क्या npm run buildकरता है, और अनुभाग npm buildमें निर्दिष्ट बिल्ड कमांड नहीं चलाता है package.json scripts। जब तक कि इसमें क्या npm buildकरना चाहिए, इसे परिभाषित करने का कोई और तरीका package.jsonनहीं है, जो कि यहाँ नहीं बताया गया है, न ही चुरो (और न ही एनपीएम डॉक्स में, मुझे लगता है, दुख की बात है)।
ट्रोलकोट्ज़

2
इसलिए मैंने इसे आजमाया और npm buildकहा कि npm WARN बिल्ड npm buildको बिना किसी तर्क के कहा जाता है। क्या आपका मतलब था npm run-script build? । मुझे लगता है कि इसने कुछ नहीं किया। यहां सभी उत्तरों को पढ़ने के लिए समय बिताने और खुद को आजमाने के बाद भी मैं यह नहीं बता सकता कि इसका उद्देश्य क्या है npm build:(?
bluenote10

4
  • npm install आपके package.json कॉन्फिगरेशन में डिपेंडेंसी को स्थापित करता है।
  • npm run build स्क्रिप्ट "बिल्ड" चलाता है और एक स्क्रिप्ट बनाई गई है जो आपके एप्लिकेशन को चलाती है - मान लें कि server.js
  • npm start "स्टार्ट" स्क्रिप्ट चलाता है जो तब "नोड server.js" होगा

वास्तव में यह बताना मुश्किल है कि समस्या क्या थी, लेकिन मूल रूप से यदि आप अपनी स्क्रिप्ट कॉन्फ़िगरेशन को देखते हैं, तो मुझे लगता है कि "बिल्ड" आपके एप्लिकेशन को बनाने के लिए किसी प्रकार के बिल्ड टूल का उपयोग करता है जबकि बिल्ड "शुरू" मानता है, लेकिन तब विफल हो जाता है यदि फ़ाइल नहीं है।

आप शायद बोवर या ग्रंट का उपयोग कर रहे हैं - मुझे याद है कि एक विशिष्ट ग्रंट एप्लिकेशन ने उन स्क्रिप्टों के साथ-साथ अंतिम निर्माण को हटाने के लिए "क्लीन" स्क्रिप्ट को परिभाषित किया होगा।

बिल्ड टूल एक फाइल को बिन /, डिस्ट /, या बिल्ड / फोल्डर बनाने के लिए करते हैं जिसे स्टार्ट स्क्रिप्ट फिर कॉल करती है - जैसे "नोड बिल्ड / सर्वर.जेएस"। जब आपकी npm startअसफलता होती है, तो यह संभवत: इसलिए है क्योंकि आपने npm cleanनवीनतम बिल्ड को हटाने के लिए कॉल किया है या समान है इसलिए आपकी एप्लिकेशन फ़ाइल मौजूद नहीं है, जिससे एनपीएम विफल होने लगता है।

npm बिल्ड का सोर्स कोड - इस सवाल में चर्चा को छूने के लिए - यदि आप चाहें तो आपके लिए एक नज़र रखना आवश्यक है। यदि आप npm buildसीधे चलते हैं और आपके पास "बिल्ड" स्क्रिप्ट परिभाषित है, तो यह एक त्रुटि के साथ बाहर निकलेगा जो आपको अपनी बिल्ड स्क्रिप्ट को कॉल करने के लिए कहेगा, क्योंकि npm run-script buildयह वैसा नहीं है npm run script

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

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