如何防止grunt-nodemon重新启动所有应用程序

我在Windows 10上运行节点。我有三个节点应用程序,我希望能够用一个方便的grunt命令启动它们。 此外,我希望节点自动重新启动,如果我修改任何应用程序。

我正在使用grunt-nodemon和grunt-concurrent的组合。 节点进程全部启动正常。

问题是,如果我修改相关的代码,他们重新启动,这需要很长的时间。 我怎样才能使nodemon只重新启动其实际修改的代码的应用程序?

var loadGruntTasks = require('load-grunt-tasks') module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concurrent: { runAll: { tasks: ['nodemon:app1', 'nodemon:app2', 'nodemon:app3'], options: { logConcurrentOutput: true } } }, nodemon: { app1: { script: './app1/app.js' }, app2: { script: './app2/app.js' }, app3: { script: './app3/app.js' } } }) loadGruntTasks(grunt) grunt.registerTask('default', ['concurrent:runAll']) } 

更新

如果我使用grunt-watch而不是grunt-nodemon ,那么只有修改了代码的应用程序才会重新启动。 问题是, grunt-watch只知道运行node app.js ,因为应用程序已经在运行,所以出现错误。 有没有办法让grunt-watch杀死节点进程并重启呢?

我认为答案可能相当简单。 Nodemon有一个忽略选项。 对于您的三个应用程序nodemon gruntconfiguration中的每一个,您都可以将它们configuration为忽略其他应用程序的目录。 这样,他们只有在自己的文件被更改时才启动重新启动,而不是其他项目的启动。 让我知道这是怎么回事。 :)有关设置config的忽略部分的细节可以在nodemons文档和grunt-nodemons文档中find。

Patrick Motard的回答让我想到了nodemon运行的目录以及它如何观察文件以进行更改。 看起来,因为我开始在所有节点应用程序的父目录内咕噜一声,每个nodemon进程都在寻找所有这些目录中的更改。 因此,我使用options.cwd设置将nodemon进程的工作目录设置为每个应用程序的相应目录。 这似乎解决了这个问题。 这是工作解决scheme:

 module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), concurrent: { runAll: { tasks: ['nodemon:app1', 'nodemon:app2', 'nodemon:app3'], options: { logConcurrentOutput: true } } }, nodemon: { app1: { script: 'app.js', options: { cwd: './app1' } }, app2: { script: 'app.js', options: { cwd: './app2' } }, app3: { script: 'app.js', options: { cwd: './app3' } } } }) loadGruntTasks(grunt) grunt.registerTask('default', ['concurrent:runAll']) } 
Interesting Posts