'एनपीएम स्टार्ट' का उपयोग कब करें और 'एनजी सर्व' का उपयोग कब करें?


157

ng serve विकास सर्वर के माध्यम से एक कोणीय परियोजना पर काम करता है

 

npm startपैकेज के "स्टार्ट" प्रॉपर्टी में निर्दिष्ट एक मनमाना कमांड चलाता है जो उसके "स्क्रिप्ट्स" ऑब्जेक्ट का है। यदि कोई "प्रारंभ" संपत्ति "स्क्रिप्ट" ऑब्जेक्ट पर निर्दिष्ट नहीं है, तो यह नोड server.js चलाएगा।

ऐसा लगता है जैसे नोड सर्वर ng serveशुरू करते समय एम्बेडेड सर्वर npm startशुरू होता है।

क्या कोई इस पर कुछ प्रकाश डाल सकता है?


1
क्या आपने देखा है कि आपके startआदेश में scriptsवस्तु में package.jsonक्या है? आपको क्यों लगता है कि इसमें कोई अंतर है?
जॉन्सर्शपे

जवाबों:


205

npm startआपकी फ़ाइल में ऑब्जेक्ट की startकमांड के लिए आपने जो भी परिभाषित किया है वह चलेगा ।scriptspackage.json

तो अगर यह इस तरह दिखता है:

"scripts": {
  "start": "ng serve"
}

फिर npm startचलेगा ng serve


इसके अलावा, ओपी के पास पहले से ही प्रति: यदि कोई "प्रारंभ" संपत्ति "स्क्रिप्ट" ऑब्जेक्ट पर निर्दिष्ट नहीं है, तो यह चलेगा node server.js(जो उस फ़ाइल के न होने पर विफल हो जाएगा)।
जोंशरशेप

1
हाँ, लेकिन कोणीय-cli प्रारंभ पर कमांड बनाता है इसलिए यदि उसने संशोधित नहीं किया है तो यह उसी कमांड का होना चाहिए।
Puigcerber

7
नोट: उपयोग करना npm startबेहतर है। उपयोग करने के लिए ng serveआपको विश्व स्तर पर कोणीय cli स्थापित करने या नोड मॉड्यूल बिन से संदर्भ देने की आवश्यकता है।
काइल पफोमेर

43

CLI का उपयोग करने वाले प्रोजेक्ट के लिए, आप आमतौर पर एनजी सर्व का उपयोग करेंगे। अन्य मामलों में आप npm शुरू का उपयोग करना चाह सकते हैं। यहाँ विस्तृत विवरण:

एनजी सेवा

एक परियोजना है कि काम करेगा है 'कोणीय CLI जानते हैं', यानी एक परियोजना है कि कोणीय CLI का उपयोग कर बनाया गया है, विशेष रूप से उपयोग करते हुए:

ng new app-name

इसलिए, यदि आपने सीएलआई का उपयोग करके किसी प्रोजेक्ट को तैयार किया है, तो आप शायद एनजी सर्व का उपयोग करना चाहेंगे

npm शुरू

यह एक परियोजना के मामले कि है में इस्तेमाल किया जा सकता नहीं कोणीय CLI बारे में पता (या यह बस को चलाने के लिए एक परियोजना कोणीय CLI बारे में पता है कि के लिए 'एनजी की सेवा' का उपयोग किया जा सकता है)

अन्य उत्तर के रूप में, यह एक npm कमांड है जो पैकेज से npm कमांड (s) को चलाएगा। इसके अलावा पहचानकर्ता 'स्टार्ट' है, और इसे सिर्फ 'एनजी सर्व' चलाने की आवश्यकता नहीं है। पैकेज में निम्नलिखित जैसा कुछ होना संभव है। आगजनी:

   "scripts": {
     "build:watch": "tsc -p src/ -w",
     "serve": "lite-server -c=bs-config.json",
     "start": "concurrently \"npm run build:watch\" \"npm run serve\""
     ...
   },
   "devDependencies": {
     "concurrently": "^3.2.0",
     "lite-server": "^2.2.2",

इस स्थिति में, 'npm start' का परिणाम निम्न कमांड को चलाने में होगा:

concurrently "npm run build:watch" "npm run serve"

यह टाइपस्क्रिप्ट कंपाइलर (कोड में बदलाव के लिए देख रहा है) को समवर्ती रूप से चलाएगा, और नोड लाइट-सर्वर (जो कि ब्राउज़र ब्राउज़र को चलाएगा)


1
मुझे लगता है कि आपके द्वारा डाउनवोट्स प्राप्त करने का एकमात्र कारण यह हो सकता है कि आप चिह्नित उत्तर में बताए गए कम या ज्यादा दोहराए गए हैं।
कोस्ट्राजक

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

13

दस्तावेज़ से

npm-start :

यह पैकेज की "स्टार्ट" संपत्ति में निर्दिष्ट एक मनमाना कमांड चलाता है जो उसके "स्क्रिप्ट" ऑब्जेक्ट के लिए है। यदि कोई "प्रारंभ" संपत्ति "स्क्रिप्ट" ऑब्जेक्ट पर निर्दिष्ट नहीं है, तो यह नोड server.js चलाएगा।

जिसका अर्थ है कि यह संकुल के अंदर आरंभ लिपियों को कहेगा

"scripts": {
"start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite --baseDir ./app --port 8001\" ",
"lite": "lite-server",
 ...
}

एनजी सेवा :

कोणीय / कोणीय-क्ली द्वारा प्रदान किया जाता है जो कोणीय 2 ऐप शुरू करता है जो कोणीय-क्ली द्वारा बनाया जाता है। जब आप कोणीय-cli स्थापित करते हैं, तो यह ng.cmd C:\Users\name\AppData\Roaming\npm(विंडोज़ के लिए) के तहत और निष्पादित करेगा"%~dp0\node.exe" "%~dp0\node_modules\angular-cli\bin\ng" %*

तो npm startआप का उपयोग करके अपने खुद के निष्पादन बना सकते हैं जहां हैng serve केवल कोणीय-क्ली के लिए है

यह भी देखें: जब आप एनजी सर्व करते हैं तो क्या होता है?


या यह दे सकता हैnpm ERR! missing script: start
लियो

1

से अधिक हैं। निष्पादित निष्पादन अलग हैं।

npm run start

आपकी परियोजनाओं को स्थानीय निष्पादन योग्य चलाएगा जो आपके नोड_मॉडल / .बीन में स्थित है।

ng serve

एक और निष्पादन योग्य चलाएगा जो वैश्विक है।

इसका मतलब है कि अगर आप कोणीय प्रोजेक्ट को क्लोन और इंस्टॉल करते हैं जो कोणीय-क्ली संस्करण 5 के साथ बनाया गया है और आपका ग्लोबल क्ली संस्करण 7 है, तो आपको एनजी बिल्ड की समस्या हो सकती है।


0

यदि आप बिना ngकमांड के कोणीय ऐप को किसी अन्य मशीन से चलाना चाहते हैं तो package.jsonनिम्नानुसार संपादित करें

"scripts": {
    "ng": "ng",
    "start": "node node_modules/.bin/ng serve",
    "build": "node node_modules/.bin/ng build",
    "test": "node node_modules/.bin/ng test",
    "lint": "node node_modules/.bin/ng lint",
    "e2e": "node node_modules/.bin/ng e2e"
  }

npm startसर्वर बनाने के लिए अंत में सामान्य कमांड चलाएं ।

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