2014-11-08 8 views
6

मैं $>npm start का उपयोग करना चाहता हूं और इसे उत्पादन के लिए "नोडम" और उत्पादन के लिए "नोड" का उपयोग करना चाहता हूं। मैं अपने पैकेज.जेसन फ़ाइल में सशर्त तर्क नहीं डाल सकता, तो यह सबसे अच्छा कैसे किया जाता है?Node.js - nodemon बनाम नोड - विकास बनाम उत्पादन

+0

* अच्छी तरह से की पाठ्यक्रम आप पैकेज.जेसन स्क्रिप्ट लाइनों में सशर्त तर्क डाल सकते हैं। इन स्क्रिप्ट स्ट्रिंग मानों को बाश द्वारा सरल व्याख्या किया जाता है। –

उत्तर

5

nodemon वास्तव में, package.start मूल्य पढ़ता है, इसलिए यदि आप केवल आपके क्या करने के लिए start गुण सेट ' डी उत्पादन में है, जैसे node app.js, फिर बिना किसी तर्क के nodemon चलाएं, यह package.start के साथ चलाएगा और आप ' विकास में उम्मीद है।

+1

यह तब उपयोगी होता है जब आप वैश्विक रूप से नोडमोन का उपयोग कर रहे हैं, मुझे लगता है कि जब आप 'npm start' टाइप करना चाहते हैं तो यह उस मामले में मदद नहीं करता है और 'dev' वातावरण में और नोड' उत्पादन में होने पर यह नोडमन चलाता है '। सशर्त के साथ नीचे दिया गया उत्तर अगर कथन पूरा करने का एकमात्र तरीका प्रतीत होता है। –

+0

@AdamReis: Somtimes एक प्रश्न पूछता है कि गलत काम कैसे करें। इसे एक्सवाई समस्या के रूप में जाना जाता है और यह केवल स्वीकार्य नहीं है बल्कि एक्स को बिना किए बिना वाई प्राप्त करने के सही तरीके से जवाब देने के लिए प्रोत्साहित किया जाता है। इस मामले में ओपी इस बात से अनजान हो सकता है कि वास्तव में कैसे नोडमोन काम करता है और इसलिए कुछ मांग रहा है इसकी आवश्यकता नही है। इसलिए यदि चीजों को करने का बेहतर तरीका है तो शाब्दिक प्रश्न को पूरा करना जरूरी नहीं है। – slebetman

4

आप नियमित शेल स्क्रिप्ट के रूप में एनपीएम की शुरुआत का उपयोग करने में सक्षम होना चाहिए।

"scripts": { 
    "start": "if [$NODE_ENV == 'production']; then node app.js; else nodemon app.js; fi" 
} 

अब उत्पादन

$ NODE_ENV='production' npm start 

या विकास के लिए के लिए अपने सर्वर शुरू करने के लिए

$ NODE_ENV='development' npm start 
+0

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

+0

पर सेट करना है, यह विंडोज के लिए काम नहीं करता है, लेकिन यह शायद मैक/यूनिक्स –

+0

के लिए काम करता है यह स्वीकार्य उत्तर होना चाहिए। – jmiraglia

1

मैं डैनियल समाधान पसंद किया, लेकिन सोचा था कि यह एक अलग फाइल startup.sh में यह डाल करने के लिए भी क्लीनर होगा:

#!/bin/sh 

if [ $NODE_ENV = "production" ]; then 
    node src/index.js; 
else 
    nodemon src/index.js; 
fi 

तो बस पढ़ने के लिए package.json बदलने के लिए:

"scripts": { 
    "start": ". ./startup.sh" 
}, 
संबंधित मुद्दे