Gruntjs 当Grunt退出时终止生成的进程
我目前正在尝试执行几个步骤,这些步骤要求将任务衍生到子进程中。例如:Gruntjs 当Grunt退出时终止生成的进程,gruntjs,Gruntjs,我目前正在尝试执行几个步骤,这些步骤要求将任务衍生到子进程中。例如: 监视文件 启动我的静态站点生成器的预览服务器 我可以很容易地使用一个任务,比如同时运行这两个任务。但是,当我退出grunt时,子进程(在本例中,是我正在使用的静态站点生成器)会继续运行。我想让这些任务同时运行——但也希望在grunt退出时终止它们 想法?您是否有理由不使用grunt contrib connect在项目根目录中启动服务器 如果可能的话,不要使用grunt shell,当grunt进程退出时,服务器将自动关闭不确
想法?您是否有理由不使用grunt contrib connect在项目根目录中启动服务器
如果可能的话,不要使用grunt shell,当grunt进程退出时,服务器将自动关闭不确定grunt shell如何工作。但如果您要设置一个自定义grunt任务来运行您的服务器,您可以尝试以下操作:
var spawn = require('child_process').spawn;
var server = spawn('myserver', ['--foo']);
process.on('exit', function() {
grunt.log.writeln('killing myserver...');
server.kill();
grunt.log.writeln('killed myserver');
});
可能这就是创建的原因。显然,
grunt shell
不处理进程
退出事件:
因此,我怀疑您的grunt进程正在退出,grunt shell
从不警告它的子进程父进程正在停止
例如,grunt concurrent
确实杀死了它的子进程,我们可以在这里看到:
process.on('exit', function () {
cpCache.forEach(function (el) {
el.kill();
});
});
资料来源:
因此,使用gruntshell
对您不起作用
一种解决方案是在Grunfile中要求wintersmith
,并在自定义任务中以编程方式运行它。请参阅上的“我的答案”
当您有一个显式需要调用的脚本时(例如:当该进程被后台监控时),这非常有用。要点很好-但不幸的是没有。我正在使用Wintersmith作为我的站点生成器(它确实使用连接服务器)-但我希望避免为预览服务器复制该逻辑。我尝试过,但没有成功(没有写消息或服务器被杀死),不幸的是。这是我最喜欢的答案。简单,直截了当。没有学习曲线。如果事情这么简单,我真的支持不使用库。从技术上讲,grunt shell插件应该在内部完成这项工作。一个简单的失误。