2016-08-26 9 views
38

मान लीजिए कि मैंरनिंग NPM लिपियों क्रमिक रूप से

"scripts": { 
    "pre-build": "echo \"Welcome\" && exit 1", 
    "build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"", 
    "post_build": "start C:\\WebAppBuilderForArcGIS\\startupShortcut", 
    "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\"" 
    }, 

क्या NPM आदेश मैं इन लिपियों के सभी क्रमिक रूप से लांच जाने के लिए चला सकते हैं। जब मैं प्री/पोस्ट फ़िक्सिंग का उपयोग अनुक्रमिक रूप से लॉन्च करता हूं लेकिन वे निष्पादित करने से पहले मूल स्क्रिप्ट को समाप्त करने की प्रतीक्षा नहीं करते हैं। मुझे लगता है कि एकमात्र समाधान इस तरह है: How do I get Gulp tasks to fire sequentially when firing shell commands in an async.series helper function?? मुझे पता है कि यह गुलप के साथ किया जा सकता है लेकिन अब मैं अपनी क्षमताओं का पता लगाने के लिए एनपीएम के साथ रहना चाहता हूं। किसी भी मदद के लिए धन्यवाद!

उत्तर

89

NPM रन के माध्यम से ये स्क्रिप्ट आह्वान और उन्हें श्रृंखला डबल एम्परसेंड && साथ:

npm run pre-build && npm run build_logic && npm run post_build && npm run exit 

स्पष्टीकरण: अनुक्रमिक निष्पादन के लिए

  • उपयोग && (डबल एम्परसेंड)।
  • समानांतर निष्पादन के लिए & (एकल एम्पर्सेंड) का उपयोग करें।
+1

यह सबसे अच्छा काम करता है क्योंकि यह क्रम में निष्पादित करता है, क्योंकि प्रत्येक आदेश ओपी में अनुरोध के अनुसार प्रीवियो समाप्त होने तक निष्पादित नहीं होता है। धन्यवाद – Rice

13

आप उन्हें किसी अन्य स्क्रिप्ट में स्ट्रिंग कर सकते हैं। "start": "pre-build && build_logic && post_build && exit"

+0

मुझे उन्हें एक दूसरे के खत्म होने की प्रतीक्षा करने की आवश्यकता होगी, ये अनुक्रमिक रूप से बंद हो जाएंगे लेकिन इंतजार नहीं करेंगे। – Rice

+0

मुझे नहीं लगता कि यह एक नोड/एनपीएम समस्या है। 'स्टार्ट' कमांड जिसे आप तकनीकी रूप से विंडोज़ में निष्पादित कर रहे हैं * है * समाप्त हो गया है। 'प्रारंभ' एप्लिकेशन को 'स्टार्ट' के साथ 'प्रारंभ करें' ध्वज का उपयोग तब तक खोलने के लिए करें जब तक कि आंतरिक विधि भी समाप्त न हो जाए। – dvlsg

+0

इसका परीक्षण करने के लिए - कमांड प्रॉम्प्ट से 'नोटपैड प्रारंभ करें' चलाएं, फिर मूल कमांड प्रॉम्प्ट पर एक नज़र डालें। आप एक और कमांड टाइप करने में सक्षम होना चाहिए। फिर 'स्टार्ट/प्रतीक्षा नोटपैड' चलाएं। आपकी नोटपैड विंडो खुली होने पर 'स्टार्ट' कमांड को "रन" करना जारी रखना चाहिए (फिर कमांड प्रॉम्प्ट पर एक नज़र डालें)। फिर एक बार जब आप नोटपैड बंद कर देते हैं, तो 'स्टार्ट' समाप्त हो जाएगा। – dvlsg

संबंधित मुद्दे