2013-10-10 49 views
5

我最近接受了Gruntjs的愛,並且一直樂於投入每一次機會讓我的開發生活變得更容易。我目前正在編譯我的SASS文件,運行手錶,並使用nodemon在我工作應用程序時保持我的節點服務器更新。Gruntjs - 以特定順序運行多個攔截任務(Mongo&Node.js)

所以這裏是我早上駕駛自己堅果的地方。我想在運行Node應用程序之前啓動MongoDB。在Node應用程序的設置中,我檢查數據庫中的任何值,如果它爲空,則將測試文件充滿信息到表中。

我目前嘗試使用grunt-concurrentgrunt-shell-spawn來運行必要的mongo和node命令。

grunt.initConfig({ 
    shell: { 
    mongo: { 
     command: 'mongo' 
    }, 
    node: { 
     command: 'node app.js' 
    } 
    }, 
    concurrent: { 
    dev: { 
     tasks: ['shell:mongo','shell:node'], 
     options: { logConcurrentOutput: true } 
    } 
    } 
}); 
grunt.loadNpmTasks('grunt-concurrent'); 
grunt.loadNpmTasks('grunt-shell-spawn'); 

有沒有辦法確保mongo命令在運行節點任務之前達到它的「阻塞」狀態?我猜這可以通過在setTimeout函數上運行異步節點任務來完成,但我不想一直等待開發過程中的更改才能生效。目前,我一直在爲數據庫保留一個單獨的shell選項卡,並且真的想將它集成到Grunt中,以便將所有內容保存在一個地方。

我不確定它是否具有廣泛的重要性,但是任何使用Node.js和MongoDB的人都會覺得這很有用。

感謝

回答

-2

可以間隔檢查MongoDB的服務端口,看看它是否是可訪問的\

+0

請嘗試閱讀本文http://stackoverflow.com/about,以獲得關於SO的更多關於問題/解答的理解。你的貢獻沒有回答這個問題。它更多的是一個評論,你可以添加,一旦你將增加你的聲譽:http://stackoverflow.com/faq#reputation –

0

使用咕嚕-nodemon殼牌嘗試:?蒙戈同時指定「選項:{異步:真正}」

concurrent: { 
     tasks: ['shell', 'nodemon'], 
     options: { 
      logConcurrentOutput: true 
     } 
    }, 
    shell: { 
     mongo: { 
      command: 'mongod', 
      options: { 
       async: true 
      } 
     } 
    }, 
nodemon: { 
     dev: { 
      script: "server.js", 
     } 
    } 

這對我有效。

+1

Nodemon是一個很好的工具來管理Node的開發設置,但那真的不是這個問題的重點。你有沒有一個測試的例子:shell:mongo在nodemon啓動前達到它的阻塞狀態_every time_?異步選項不保證這一點。 –