मैं समानांतर में कई एनपीएम स्क्रिप्ट कैसे चला सकता हूं?


542

मेरी package.jsonइन दो लिपियों में:

  "scripts": {
    "start-watch": "nodemon run-babel index.js",
    "wp-server": "webpack-dev-server",
  }

मुझे इन 2 लिपियों को समानांतर में चलाना है, जब मैं Node.js. में विकसित होने लगता हूं पहली चीज जो मैंने सोची थी, वह इस तरह तीसरी स्क्रिप्ट जोड़ रही थी:

"dev": "npm run start-watch && npm run wp-server"

... लेकिन वह start-watchचलने से पहले खत्म होने का इंतजार करेगा wp-server

मैं इन्हें समानांतर कैसे चला सकता हूं? कृपया ध्यान रखें कि मुझे outputइन आदेशों को देखने की आवश्यकता है । इसके अलावा, अगर आपके समाधान निर्माण उपकरण शामिल है, मैं नहीं बल्कि प्रयोग करेंगे gulpबजाय gruntक्योंकि मैं पहले से ही एक अन्य परियोजना में इसका इस्तेमाल करते हैं।


23
&&क्रमबद्ध तरीके से आपकी स्क्रिप्ट चलाएंगे जबकि &उन्हें समानांतर में चलाएंगे ।
vsync

इसे करने का एक त्वरित तरीका है npm run start-watch & npm run wp-server। यह बैकग्राउंड थ्रेड के रूप में पहला कमांड चलाएगा। यह वास्तव में अच्छी तरह से काम करता है जब कमांड में से एक लंबे समय तक नहीं चल रहा है और बाद में मैन्युअल रूप से बाहर निकलने की आवश्यकता नहीं है। कुछ ऐसा ही concurrentlyआपको CTRL-C के साथ एक ही समय में सभी थ्रेड्स को मारने की अनुमति देता है।
जोशुआ पिंटर

जवाबों:


616

समवर्ती नामक पैकेज का उपयोग करें ।

npm i concurrently --save-dev

फिर अपना npm run devकाम सेटअप करें :

"dev": "concurrently --kill-others \"npm run start-watch\" \"npm run wp-server\""

11
node ./node_modules/concurrently/src/main.jsआवश्यकता नहीं है। concurrentक्योंकि मॉड्यूल के लिए एक बिन स्थापित करता लिपियों में ठीक काम करेगा./node_modules/.bin/concurrent
Raine

14
समांतर कोश भी है । मैं वास्तव में सलाह देता हूं कि concurrentlyकंसोल कंसोल के साथ गड़बड़ करने वाले कई स्ट्रीम का उपयोग करता है (रंग अजीब हो सकते हैं, कर्सर चला गया) जबकि parallelshellयह मुद्दा नहीं है ।
स्टिजन डे विट

3
@StijndeWitt द्वारा समवर्ती उल्लिखित कीड़े अब 2.0.0 रिलीज में तय किए गए हैं । आप --rawआउटपुट में रंगों को संरक्षित करने के लिए मोड का उपयोग कर सकते हैं ।
किममो

23
@StijndeWitt parallelshell की NPM रन-सभी पक्ष में पदावनत किया गया है github.com/keithamus/...
jtzero

12
हमें जावास्क्रिप्ट बिल्ड / रन स्क्रिप्ट का प्रबंधन करने के लिए एक बेहतर तरीका होना चाहिए। इस प्लेटफ़ॉर्म के लिए सब कुछ एक साथ निपट गया लगता है। बच गए उद्धरण और npm के साथ उद्धरण अन्य 'npm रन' बिल्ड को कॉल करता है .. यह बहुत दर्दनाक हो रहा है।
एंड्रयू टी फिनेल

141

यदि आप UNIX- जैसे वातावरण का उपयोग कर रहे हैं, &तो विभाजक के रूप में उपयोग करें :

"dev": "npm run start-watch & npm run wp-server"

अन्यथा यदि आप क्रॉस-प्लेटफॉर्म समाधान पर रुचि रखते हैं, तो आप npm-run-all मॉड्यूल का उपयोग कर सकते हैं :

"dev": "npm-run-all --parallel start-watch wp-server"

14
मैं ऐसा करता हूं - समय-समय पर जब मैं "ctrl-c" npm, कमांड पृष्ठभूमि पर लटका रहता है ... कोई विचार?
कामिल तोमिक्क

13
a && bसफलतापूर्वक समाप्त bहोने के बाद शुरू होता है a, लेकिन त्रुटियों के बिना नोडम कभी नहीं रुकता है, ताकि काम न कर सके। a & bशुरू होता है a, इसे पृष्ठभूमि पर ले जाता है और bतुरंत शुरू होता है। जीत! a | bस्टैडआउट के स्टड को पाइप करता aहै bजिसके लिए दोनों को एक साथ चलाने की आवश्यकता होती है। हालाँकि यह वांछित प्रभाव प्रतीत हो सकता है, आपको इसका उपयोग यहाँ नहीं करना चाहिए।
j2L4e

8
@ KamilTomšík &एक बहुत बुरा विचार है क्योंकि यह प्रक्रिया को अलग कर देता है। इसका मतलब है कि npmअब मूल प्रक्रिया नहीं होगी। आप एक ज़ोंबी के साथ समाप्त हो npm run start-watchजाएंगे जो कि मारा नहीं जाएगा ctrl-c
ngryman

6
बस waitफांसी की प्रक्रियाओं के साथ समस्या को कम करने के लिए जोड़ें :"dev": "npm run start-watch & npm run wp-server & wait"
रुस्लान प्रोकोपुक

2
यह एक ज़ोंबी नहीं है। लेकिन &यूनिक्स पर कमांड को Cc / Cz पर प्रतिक्रिया देने से रोकता है और विफलता के मामले में इसके रिटर्न कोड को प्रचारित करने से भी रोकता है।
बिंकी

77

विंडो cmd से आप उपयोग कर सकते हैं start:

"dev": "start npm run start-watch && start npm run wp-server"

इस तरह से लॉन्च किया गया हर कमांड अपनी विंडो में शुरू होता है।


2
सही समाधान! मुझे प्यार है कि यह नई विंडो लॉन्च करता है। VS2015 पैकेज के लिए शानदार। जसन की जरूरत है
टेट्राडेव

13
अगर आपके पास वॉचर कार्य हैं तो यह काम नहीं करता है क्योंकि &&दूसरी कमांड शुरू करने से पहले पहले कमांड के समाप्त होने का इंतजार करता है और वॉकर का कार्य कभी भी समाप्त नहीं होगा।
बेनी नेउगेबॉयर

2
@BennyNeugebauer कमांड "आरंभ" कमांड के साथ है, जो प्रत्येक कमांड के लिए एक नई कमांड लाइन खोलती है। मैं पहले भी उलझन में था क्योंकि मुझे लगा कि "&& ऑपरेटर का उपयोग करने से काम नहीं चलेगा"। यह समाधान बहुत सरल है और इसके लिए डेवलपर से अतिरिक्त पैकेज / कार्य की आवश्यकता नहीं है।
Addison

5
ये गलत है। क्रमबद्ध तरीके से कमांड चलाया जाएगा। विंडोज पर आपको एक साथ कमांड चलाने के लिए एक प्लगइन का उपयोग करना होगा।
१२

1
क्या यह विंडोज-विशिष्ट नहीं है?
बिंकी

62

आप का उपयोग करना चाहिए NPM रन-सब (या concurrently, parallelshell,) क्योंकि यह शुरू करने और आदेशों की हत्या पर अधिक नियंत्रण है। ऑपरेटर &, |बुरे विचार हैं क्योंकि सभी परीक्षण समाप्त होने के बाद आपको इसे मैन्युअल रूप से बंद करने की आवश्यकता होगी।

यह एनपीटी के माध्यम से प्रोट्रैक्टर परीक्षण के लिए एक उदाहरण है:

scripts: {
  "webdriver-start": "./node_modules/protractor/bin/webdriver-manager update && ./node_modules/protractor/bin/webdriver-manager start",
  "protractor": "./node_modules/protractor/bin/protractor ./tests/protractor.conf.js",
  "http-server": "./node_modules/http-server/bin/http-server -a localhost -p 8000",
  "test": "npm-run-all -p -r webdriver-start http-server protractor"
}

-p = समांतर में रन कमांड।

-r = सभी आदेशों को मार डालो जब उनमें से एक शून्य के निकास कोड के साथ समाप्त होता है।

रनिंग npm run testसेलेनियम ड्राइवर शुरू करेगा, http सर्वर शुरू करेगा (आप फ़ाइलों की सेवा के लिए) और प्रोट्रेक्टर परीक्षण चलाएगा। एक बार सभी परीक्षण समाप्त हो जाने के बाद, यह http सर्वर और सेलेनियम ड्राइवर को बंद कर देगा।


3
मुझे आश्चर्य है कि यह परीक्षण चलाने के लिए ठीक से कैसे काम करता है, हालांकि। जबकि वेबड्राइवर-स्टार्ट और http-सर्वर समानांतर में चल सकते हैं, प्रोट्रैक्टर कार्य पहले दो के बाद ही चलना चाहिए।
asenovm

आदेश निर्भर कार्यों के लिए @asenovm, सिर्फ उपयोग gulpऔर क्यों नहीं gulp-sync?
r3wt

30

आप &समानांतर रन स्क्रिप्ट के लिए एक का उपयोग कर सकते हैं

"dev": "npm run start-watch & npm run wp-server"

संदर्भ लिंक


क्या यह विंडोज में भी काम करेगा? क्षमा करें, मैं नोड के लिए बहुत नया हूँ और मुझे नहीं पता कि यह कैसे सत्यापित किया जाए!
बेनिसन सैम

@BenisonSam नहीं, हालांकि मैक पर काम करता है
shanhoban

25

उपयोग करने के लिए एक बेहतर उपाय है &

"dev": "npm run start-watch & npm run wp-server"

54
नहीं, यह बेहतर नहीं है क्योंकि यह सभी प्लेटफार्मों पर काम नहीं करता है।
स्टिजन डे विट

मैं नहीं जानता था कि। यह किस प्लेटफार्म पर काम नहीं करता है? @ कोरी - अंतर-ऑप पर चेतावनी के साथ अपने उत्तर को अपडेट करें और मैं आपको आगे बढ़ाऊंगा
एशले कूलमैन

8
&विंडोज पर काम करता है, लेकिन यह अलग तरह से काम करता है। OSX पर, यह दोनों कमांड को समवर्ती रूप से चलाएगा, लेकिन विंडोज पर, यह पहली कमांड को चलाएगा, और पहली कमांड के मौजूद होने के बाद, यह दूसरी कमांड को चलाएगा।
ट्रेवर

3
नहीं, यह नहीं है क्योंकि यह प्रक्रिया को समाप्त कर देता है, आप इसे एक साधारण तरीके से मार नहीं पाएंगे।
ngryman

2
@ngryman यही मुझे उम्मीद थी। हालाँकि, मैंने यह कोशिश की और जब आप Ctrl + C मारते हैं तो यह सभी तीन प्रक्रियाओं (देव, स्टार्ट-वॉच और wp-server) को मार देता है।
म्यूज़िक

17

मैंने ऊपर से लगभग सभी समाधानों की जाँच की है और केवल npm-run-all के साथ मैं सभी समस्याओं को हल करने में सक्षम था। अन्य सभी समाधानों पर मुख्य लाभ तर्क के साथ स्क्रिप्ट को चलाने की क्षमता है ।

{
  "test:static-server": "cross-env NODE_ENV=test node server/testsServer.js",
  "test:jest": "cross-env NODE_ENV=test jest",
  "test": "run-p test:static-server \"test:jest -- {*}\" --",
  "test:coverage": "npm run test -- --coverage",
  "test:watch": "npm run test -- --watchAll",
}

नोट के run-pलिए शॉर्टकट हैnpm-run-all --parallel

यह मुझे जैसे तर्कों के साथ कमांड चलाने की अनुमति देता है npm run test:watch -- Something

संपादित करें:

इसके लिए एक और उपयोगी विकल्प है npm-run-all:

 -r, --race   - - - - - - - Set the flag to kill all tasks when a task
                            finished with zero. This option is valid only
                            with 'parallel' option.

कोड के साथ समाप्त होने पर सभी प्रक्रियाओं को मारने के -rलिए अपनी npm-run-allस्क्रिप्ट में जोड़ें 0। यह विशेष रूप से तब उपयोगी होता है जब आप एक HTTP सर्वर चलाते हैं और एक अन्य स्क्रिप्ट जो सर्वर का उपयोग करते हैं।

  "test": "run-p -r test:static-server \"test:jest -- {*}\" --",

15

मेरे पास किसी भी अतिरिक्त मॉड्यूल के बिना एक क्रॉसप्लेट रिकॉर्डर समाधान है । मैं एक कोशिश की तरह कुछ पकड़ ब्लॉक मैं cmd।

समाधान command1 || command2जो दोनों पर्यावरण में एक ही काम करने लगता है। तो ओपी के लिए समाधान है:

"scripts": {
  "start-watch": "nodemon run-babel index.js",
  "wp-server": "webpack-dev-server",
  // first command is for the cmd.exe, second one is for the bash
  "dev": "(start npm run start-watch && start npm run wp-server) || (npm run start-watch & npm run wp-server)",
  "start": "npm run dev"
}

फिर सरल npm start(और npm run dev) सभी प्लेटफार्मों पर काम करेगा!


11

यदि आप डबल एम्परसेंड को एकल एम्परसेंड के साथ बदलते हैं, तो स्क्रिप्ट समवर्ती रूप से चलेगी।


वास्तव में, यह सरल और सुरुचिपूर्ण है, निर्भरता या अन्य जादू की कोई आवश्यकता नहीं है।
मैजिकमेकर

1
@Ginzburg सभी प्लेटफार्मों के लिए समान काम नहीं करता है, क्योंकि आप अन्य उत्तरों में देख सकते हैं।
जॉर्ज फ्यूएंटेस गोंजालेज

6

त्वरित समाधान

इस मामले में, मैं सबसे अच्छी शर्त कहूंगा कि यदि यह स्क्रिप्ट केवल * निक्स-आधारित मशीनों पर चलने के लिए एक निजी मॉड्यूल के लिए है , तो आप प्रक्रियाओं के लिए नियंत्रण ऑपरेटर का उपयोग कर सकते हैं, जो इस तरह दिखता है:&

आंशिक पैकेज में ऐसा करने का एक उदाहरण। Json फ़ाइल:

{
  "name": "npm-scripts-forking-example",
  "scripts": {
    "bundle": "watchify -vd -p browserify-hmr index.js -o bundle.js",
    "serve":  "http-server -c 1 -a localhost",
    "serve-bundle": "npm run bundle & npm run serve &"
  }

आप तब उन दोनों को समानांतर के माध्यम से निष्पादित करेंगे npm run serve-bundle। आप कांटेक्ट प्रोसेस के pids को किसी फाइल में आउटपुट करने के लिए स्क्रिप्ट्स को बढ़ा सकते हैं:

"serve-bundle": "npm run bundle & echo \"$!\" > build/bundle.pid && npm run serve & echo \"$!\" > build/serve.pid && npm run open-browser",

फोर्किंग के लिए Google कुछ बैश कंट्रोल ऑपरेटर की तरहयह कैसे काम करता है इसके बारे में अधिक जानने के करता है। मैंने नीचे नोड परियोजनाओं में यूनिक्स तकनीकों का लाभ उठाने के संबंध में कुछ और संदर्भ प्रदान किए हैं:

इसके अलावा संदर्भ RE: यूनिक्स उपकरण और Node.js

यदि आप विंडोज पर नहीं हैं, तो यूनिक्स उपकरण / तकनीक अक्सर नोड स्क्रिप्ट के साथ कुछ हासिल करने के लिए अच्छी तरह से काम करते हैं क्योंकि:

  1. Node.js का अधिकांश भाग यूनिक्स सिद्धांतों का प्रेमपूर्वक अनुकरण करता है
  2. आप * nix (incl। OS X) पर हैं और NPM वैसे भी शेल का उपयोग कर रहा है

Nodeland में प्रणाली के कार्यों के लिए मॉड्यूल भी अक्सर कपोल-कल्पना या यूनिक्स उपकरण का अनुमान, से कर रहे हैं fsकरने के लिए streams


1
नहीं, &ऑपरेटर विंडोज पर समर्थित नहीं है।
स्टिजन डे विट

3
@StijndeWitt मेरी पोस्ट में कहा गया है, "यदि आप विंडोज पर नहीं हैं ..."। मैं जिन लोगों के साथ काम करता हूं उनमें से 0% दुनिया की सबसे बड़ी टेक कंपनियों में से एक है, विंडोज पर नोड चलाते हैं। तो स्पष्ट रूप से मेरी पोस्ट अभी भी कई डेवलपर्स के लिए मूल्यवान है।
james_womack

2
यह तर्क का एक गोलाकार तरीका है, हालांकि यह नहीं है? यदि आप अपनी npm स्क्रिप्ट इस तरह लिखते हैं तो आप विंडोज का उपयोग नहीं कर पाएंगे क्योंकि यह काम नहीं करेगा। तो कोई भी विंडोज़ का उपयोग नहीं करता है, इसलिए यह कोई फर्क नहीं पड़ता कि यह काम नहीं करता है ... आप प्लेटफ़ॉर्म निर्भर सॉफ़्टवेयर के साथ समाप्त होते हैं। अब अगर जिस चीज़ की ज़रूरत है, वह क्रॉस-प्लेटफ़ॉर्म करने के लिए बहुत कठिन है, तो इससे अच्छा ट्रेड-ऑफ बनाने के लिए हो सकता है। लेकिन यहाँ यह समस्या मानक npm लिपियों जैसे समवर्ती और समांतर कोश के साथ करना बहुत आसान है ।
स्टिजन डे विट

2
@StijndeWitt मेरा कोई तर्क परिपत्र नहीं था। मैंने तथ्यपूर्ण तर्क के कारण बयान किया। हम नोड डेवलपर्स के लिए सामान्य तकनीकों को पोस्ट कर रहे हैं, जिनमें से कई लिनक्स सर्वरों का निर्माण और परिनियोजन करते हैं। हां, यह विंडोज पर काम करना चाहिए अगर यह एक उपयोगकर्ता स्क्रिप्ट है, लेकिन अधिकांश npm स्क्रिप्ट विकास और परिनियोजन के लिए हैं - ज्यादातर * निक्स मशीनों पर। जिन मॉड्यूलों का आपने उल्लेख किया है उनके बारे में) यह समवर्ती और समांतर कॉल "मानक" को कॉल करने के लिए एक बहुत बड़ा खिंचाव है (~ 1500 डाउनलोड एक दिन मानक से बहुत दूर है) और बी) यदि आपको समानांतर प्रक्रिया के लिए अतिरिक्त सॉफ़्टवेयर की आवश्यकता है, तो आप अच्छी तरह से उपयोग कर सकते हैं। Gulp।
james_womack

@StijndeWitt मैं सराहना करता हूँ, हालांकि उन मॉड्यूलों से अवगत कराया जा रहा है - धन्यवाद
james_womack

6
npm-run-all --parallel task1 task2

संपादित करें:

आपको पहले से npm-run-all स्थापित करने की आवश्यकता है । अन्य उपयोग परिदृश्यों के लिए भी इस पृष्ठ को देखें।


5

कैसे फोर्किंग के बारे में

एकाधिक नोड स्क्रिप्ट चलाने का एक अन्य विकल्प एक एकल नोड स्क्रिप्ट के साथ है, जो कई अन्य लोगों को कांटा कर सकता है। फोर्किंग का समर्थन मूल रूप से नोड में किया जाता है, इसलिए यह कोई निर्भरता नहीं जोड़ता है और क्रॉस-प्लेटफॉर्म है।


न्यूनतम उदाहरण

यह स्क्रिप्ट को केवल चलाएगा और मान सकता है कि वे मूल स्क्रिप्ट की निर्देशिका में स्थित हैं।

// fork-minimal.js - run with: node fork-minimal.js

const childProcess = require('child_process');

let scripts = ['some-script.js', 'some-other-script.js'];
scripts.forEach(script => childProcess.fork(script));

क्रिया का उदाहरण

यह तर्कों के साथ स्क्रिप्ट चलाएगा और कई उपलब्ध विकल्पों द्वारा कॉन्फ़िगर किया जाएगा।

// fork-verbose.js - run with: node fork-verbose.js

const childProcess = require('child_process');

let scripts = [
    {
        path: 'some-script.js',
        args: ['-some_arg', '/some_other_arg'],
        options: {cwd: './', env: {NODE_ENV: 'development'}}
    },    
    {
        path: 'some-other-script.js',
        args: ['-another_arg', '/yet_other_arg'],
        options: {cwd: '/some/where/else', env: {NODE_ENV: 'development'}}
    }
];

let processes = [];

scripts.forEach(script => {
    let runningScript = childProcess.fork(script.path, script.args, script.options);

   // Optionally attach event listeners to the script
   runningScript.on('close', () => console.log('Time to die...'))

    runningScripts.push(runningScript); // Keep a reference to the script for later use
});

कांटेक्टेड स्क्रिप्ट के साथ संवाद

फोर्किंग का अतिरिक्त लाभ यह भी है कि अभिभावक लिपि में कांटे की बाल प्रक्रियाओं से घटनाओं को प्राप्त कर सकते हैं और साथ ही वापस भेज सकते हैं। एक सामान्य उदाहरण माता-पिता की स्क्रिप्ट के लिए है कि वह अपने बच्चों को मार डाले।

 runningScripts.forEach(runningScript => runningScript.kill());

अधिक उपलब्ध घटनाओं और विधियों के लिए प्रलेखन देखेंChildProcess


3

मैं के साथ समस्याओं में भाग &और |है, जो बाहर निकलने स्थितियां और त्रुटि फेंक, क्रमशः।

अन्य समाधान किसी भी कार्य को दिए गए नाम के साथ चलाना चाहते हैं, जैसे कि npm-run-all, जो मेरा उपयोग मामला नहीं था।

इसलिए मैंने npm-run-समानांतर बनाया जो npm स्क्रिप्ट को अतुल्यकालिक रूप से चलाता है और जब वे काम करते हैं तो वापस रिपोर्ट करते हैं।

तो, आपकी लिपियों के लिए, यह होगा:

npm-run-parallel wp-server start-watch


2

मेरे मामले में मेरे पास दो प्रोजेक्ट हैं, एक था UI और दूसरा था API , और दोनों की अपनी-अपनी package.jsonफाइलों में अपनी स्क्रिप्ट है ।

तो मैंने यह किया।

npm run --prefix react start&  npm run --prefix express start&

अपने समाधान की तरह। इसके अलावा UI ( node app) और API (सबफ़ोल्डर src में कोणीय , अनुमान है cd src/ng serve), केवल पहला भाग काम करता है। उदाहरण के लिए node app& cd src& ng serve
Jeb50


1

मैं कुछ समय से npm-run-all का उपयोग कर रहा हूं , लेकिन मुझे इसके साथ कभी नहीं मिला, क्योंकि वॉच मोड में कमांड का आउटपुट एक साथ काम नहीं करता है। उदाहरण के लिए, अगर मैं शुरू करता हूं create-react-appऔर jestवॉच मोड में, मैं केवल उस अंतिम कमांड से आउटपुट देख पाऊंगा जिसे मैंने चलाया था। तो ज्यादातर समय, मैं अपने सभी आदेशों को मैन्युअल रूप से चला रहा था ...

यही कारण है कि, मैं अपने स्वयं के काम, रन-स्क्रीन को लागू करता हूं । यह अभी भी बहुत युवा परियोजना है (कल से: पी) लेकिन यह देखने के लायक हो सकता है, आपके मामले में यह होगा:

run-screen "npm run start-watch" "npm run wp-server"

तब आप 1आउटपुट कुंजी को wp-serverदबाकर 0उसका आउटपुट देखते हैं और आउटपुट देखने के लिए दबाते हैं start-watch


1

मेरा समाधान पिआटिस के समान है, हालांकि मुझे विंडोज का उपयोग करने में कुछ समस्याएं थीं। तो मुझे win32 के लिए मान्य करना था।

const { spawn } = require("child_process");

function logData(data) {
    console.info(`stdout: ${data}`);
}

function runProcess(target) {
    let command = "npm";
    if (process.platform === "win32") {
        command = "npm.cmd"; // I shit you not
    }
    const myProcess = spawn(command, ["run", target]); // npm run server

    myProcess.stdout.on("data", logData);
    myProcess.stderr.on("data", logData);
}

(() => {
    runProcess("server"); // package json script
    runProcess("client");
})();

0

सरल नोड स्क्रिप्ट आपको बहुत अधिक परेशानी के बिना जाने के लिए। आउटपुट को संयोजित करने के लिए रीडलाइन का उपयोग करना ताकि लाइनें मैंगल्ड न हो जाएं।

const { spawn } = require('child_process');
const readline = require('readline');

[
  spawn('npm', ['run', 'start-watch']),
  spawn('npm', ['run', 'wp-server'])
].forEach(child => {
    readline.createInterface({
        input: child.stdout
    }).on('line', console.log);

    readline.createInterface({
        input: child.stderr,
    }).on('line', console.log);
});

0
"dev": "(cd api && start npm run start) & (cd ../client && start npm run start)"

खिड़कियों में यह काम

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