gpt4 book ai didi

node.js - Grunt : execute node process and watch 中的类似 Nodemon 的任务

转载 作者:IT老高 更新时间:2023-10-28 22:00:31 26 4
gpt4 key购买 nike

我觉得我错过了什么。

这是我想要实现的目标:

有一个执行我的 server.js 并并行运行 watch 任务的 grunt 任务。在我看来,这正是 grunt 设计的任务之一,但我无法实现这种配置。

除其他外,我读过这个: Running Node app through Grunt但我还是做不到。

这是我的 Gruntfile.js :

module.exports = function(grunt) {

// Project configuration.
grunt.initConfig({
watch: {
scripts: {
files: ['*.js'],
tasks: ['start'],
options: {
nospawn: true
}
}
}
});

grunt.loadNpmTasks('grunt-contrib-watch');

grunt.registerTask('start', function() {
grunt.util.spawn({
cmd: 'node',
args: ['server.js']
});
grunt.task.run('watch');
});

grunt.registerTask('default', 'start');
};

我有 "grunt-contrib-watch": "~0.3.1" 应该是比 grunt-contrib-watch@0.3.0 更高的版本,如前面提到的帖子。

如果您能帮助我实现正确的配置,我将不胜感激。但更一般地说,我不明白为什么没有官方的 grunt-contrib-nodemon-like 包和任务,因为我觉得这将是使用 grunt 的另一个重要原因(我真的就像工具一样!)

谢谢

最佳答案

编辑:grunt-nodemon

自从写了这篇文章后,一个好人开发了它。


我在使用 grunt.util.spawn 启动新进程时遇到了很多麻烦。他们会跑,但他们不会给我任何输出。也许您可以弄清楚我在这些文档中无法解决的问题。 http://gruntjs.com/api/grunt.util#grunt.util.spawn

我看到你所拥有的两个问题:

  • 我认为 grunt.registerTask() 在使用回调函数运行任务时必须接受三个参数。
  • 我不认为您可以在每次文件更改时一遍又一遍地调用 node server.js。它会在第一次运行,要真正运行,您必须将服务器作为子进程进行管理,在后续文件更改时终止并重新启动它。

对于 registerTask 参数试试这个,只是为了看看你是否可以在你当前的实现中得到一些工作。

http://gruntjs.com/api/grunt.task#grunt.task.registertask

它需要 (taskName, description, taskFunction) 像这样:

grunt.registerTask('start', 'My start task description', function() {
grunt.util.spawn({
cmd: 'node',
args: ['server.js']
});
grunt.task.run('watch');
});

这至少可以让您的 watch 在文件第一次更改时运行 node server.js

这就是我要做的。

要么按原样使用 nodemon $ nodemon server.js

或者...

阅读源码并使用grunt-develop

他将服务器作为子进程进行管理,这可能就是您要找的。

或者...

获取 grunt-shell
npm install grunt-shell --save-dev

并用它为你运行 nodemon:

module.exports = function(grunt) {

// Project configuration.
grunt.initConfig({
serverFile: 'server.js',
shell: {
nodemon: {
command: 'nodemon <%= serverFile %>',
options: {
stdout: true,
stderr: true
}
}
},
watch: { /* nothing to do in watch anymore */ }
});

grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-shell');

grunt.registerTask('default', 'shell:nodemon');
};

$ grunt shell:nodemon

我真诚地希望这会有所帮助。祝你好运!

关于node.js - Grunt : execute node process and watch 中的类似 Nodemon 的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com