के माध्यम से नोड ऐप चलाना मैं अपने नोड एप्लिकेशन को ग्रंट कार्य के रूप में चलाने की कोशिश कर रहा हूं। मुझे इसे बाल प्रक्रिया के रूप में उभारा है, हालांकि, मुझे समानांतर में घड़ी कार्य चलाने की अनुमति देने के लिए।ग्रंट
यह काम करता है:
grunt.registerTask('start', function() {
grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
हालांकि, जब परिवर्तन घड़ी कार्य द्वारा पता लगाया जाता है, यह शुरुआत कार्य फिर से ट्रिगर किया जाएगा। मेरे नोड ऐप की एक अन्य बाल प्रक्रिया को जन्म देने से पहले, मुझे पिछले एक को मारने की जरूरत है।
मैं यह नहीं समझ सकता कि प्रक्रिया को कैसे मारना है, हालांकि। कुछ इस तरह काम नहीं करता:
var child
grunt.registerTask('start', function() {
if (child) child.kill()
child = grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
ऐसा नहीं है कि प्रतीत होता है:
- हालांकि मैं समारोह संदर्भ के बाहर एक चर में पैदा की प्रक्रिया की दुकान है, यह मौजूद नहीं होता है, तो अगली बार कार्य शुरू हो गया है, बच्चा
undefined
है। child
कोईkill
समारोह ...
मैंने अपने 'ग्रंट-कॉन्ट्रिब-घड़ी' मॉड्यूल को [nospawn] (https://github.com/gruntjs/grunt-contrib-watch/tree/nospawn) शाखा के साथ बदल दिया है और 'nospawn' सेट किया है सही करने का विकल्प: https://gist.github.com/OliverJAsh/5021187। 'फ़ंक्शन' अभी भी दूसरी फ़ंक्शन कॉल पर परिभाषित नहीं है। साथ ही, क्या आप जानते हैं कि मैं बाल प्रक्रिया को कैसे मार सकता हूं? –
Gruntfile एक जेएसएस फ़ाइल नहीं है, केवल एक जेएस फ़ाइल है। आपको grunt.task.run() के साथ घड़ी कार्य को कॉल करने की आवश्यकता नहीं है। संदर्भ साझा करने के लिए घड़ी का उपयोग करके यहां एक उदाहरण दिया गया है: https://github.com/gruntjs/grunt-contrib-watch/blob/nospawn/test/fixtures/nospawn/Gruntfile.js#L35 –
बाल प्रक्रिया को मारने के लिए: 'child.kill ('SIGINT');' –