gpt4 book ai didi

javascript - 等待退出的 Grunt 任务

转载 作者:行者123 更新时间:2023-11-29 10:44:42 25 4
gpt4 key购买 nike

我有一个启动 IIS Express 异步的任务,要停止 IIS,我必须触发一个 grunt 事件。

我想做一个任务,等待我按下 ctrl-c 然后触发那个事件。

我试过这样做:

grunt.registerTask("killiis", function(){
process.stdin.resume();
var done = this.async();
grunt.log.writeln('Waiting...');

process.on('SIGINT', function() {
grunt.event.emit('iis.kill');
grunt.log.writeln('Got SIGINT. Press Control-D to exit.');
done();
});
});

任务成功停止 grunt,但没有正确发送事件。

最佳答案

SIGINT 处理程序在 Node.js 中工作,但在 Grunt 中不工作(我不知道为什么)。我使用 readline 模块手动处理 ctrl+c 并监听 exit 事件:

var readline = require('readline');

var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

rl.on('SIGINT', function() {
process.emit('SIGINT');
});

process.on('exit', killIis);

function killIis() {
// kill it
}

此外,我建议监听 SIGINTSIGHUPSIGBREAK 信号来处理控制台窗口关闭或 ctrl+break(如果有人使用它,呵呵)。当您还想停止应用程序时,在这些处理程序中调用 process.exit():

process.on('exit', killIis);
process.on('SIGINT', killIisAndExit);
process.on('SIGHUP', killIisAndExit);
process.on('SIGBREAK', killIisAndExit);

我有一个 grunt-iisexpress 的分支,可以在退出时杀死 IIS:https://github.com/whyleee/grunt-iisexpress .

关于javascript - 等待退出的 Grunt 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21922443/

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