我最近爱上了 Gruntjs,并且很高兴地抓住每一个机会让我的开发生活变得更加轻松。我目前使用它来编译我的 SASS 文件、运行手表,并使用 nodemon 在我处理应用程序时让我的节点服务器保持更新。
所以这就是我整个早上都在发疯的地方。我想在 Node 应用程序运行之前启动 MongoDB。在 Node 应用程序的设置中,我检查数据库中的任何值,如果它为空,则将一个包含信息的测试文件推送到表中。
我目前尝试使用grunt-concurrent和grunt-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 的人都会发现它很有用。
谢谢