4
我使用grunt在每次更改我的代碼時都完成了一些任務(例如jshint),並且我希望每次更改時都重新加載phantomJs進程。使用grunt重新啓動phantomjs進程
我發現的第一種方法是使用grunt.util.spawn首次運行phantomJs。
// http://gruntjs.com/api/grunt.util#grunt.util.spawn
var phantomJS_child = grunt.util.spawn({
cmd: './phantomjs-1.9.1-linux-x86_64/bin/phantomjs',
args: ['./phantomWorker.js']
},
function(){
console.log('phantomjs done!'); // we never get here...
});
然後,每次重新啓動手錶,另一個任務使用grunt.util.spawn殺phantomJs過程,這當然是非常難看。
有沒有更好的方法來做到這一點? 問題是phantomJs進程沒有被終止,因爲我使用它作爲web服務器來使用JSON來服務REST API。
當我重新運行任務以創建一個新任務之前,我是否可以收到一個咕嚕聲回調或什麼時候開始觀看,因此我可以關閉以前的phantomJs過程?
我用grunt.event來創建一個處理程序,但我看不到如何訪問phantomjs進程以殺死它。
grunt.registerTask('onWatchEvent',function(){
// whenever watch starts, do this...
grunt.event.on('watch',function(event, file, task){
grunt.log.writeln('\n' + event + ' ' + file + ' | running-> ' + task);
});
});
我只是在使用它之前先熟練地熟悉它。通過這種方式,我們再次手動殺死該進程。我不知道我們可以像這樣使用「退出」事件。你確定每當觀看重新加載任務時,這個'退出'事件會觸發?當然,在'退出'上殺死它是最好的例子。 – AntouanK
對不起,我把你的用例與我在另一個選項卡上閱讀的東西混淆了。只是對代碼片段進行了一些編輯,我認爲會與您的用例相匹配。但它不起作用。每當觀察者檢測到更改時,都會重新執行Gruntfile.js。因此沒有持續參考phantomjs是可能的。反正也不是這樣。 –