首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >当一起使用Gulp nodemon和gulp.watch时,无法使用Ctrl+C停止gulp

当一起使用Gulp nodemon和gulp.watch时,无法使用Ctrl+C停止gulp
EN

Stack Overflow用户
提问于 2015-10-06 00:22:59
回答 3查看 2K关注 0票数 1

当我在没有node任务的情况下运行gulp时,它工作得很好,并按预期处理客户端文件;如果我运行gulp node,它会按预期处理服务器文件。然而,如果我同时运行两个gulp,它会像预期的那样同时处理客户端和服务器端的文件,但它不会让我通过按下Ctrl+C退出(在windows10和Mac El Capitan上尝试过)。我是不是做错了什么?

代码语言:javascript
复制
'use strict';
  var gulp = require('gulp');
    var connect = require('gulp-connect'); 
    var browserify = require('browserify'); 
    var source = require('vinyl-source-stream'); 
    var nodemon = require('gulp-nodemon');

    var config = {
        port: 9005,
        devBaseUrl: 'http://localhost',
        paths: {
            html: './src/*.html',
            dist: './dist',
            js: './src/**/*.js',
            images: './src/images/*',
            mainJs: './src/main.js',
            css: [
                'node_modules/bootstrap/dist/css/bootstrap.min.css',
                'node_modules/bootstrap/dist/css/bootstrap-theme.min.css'
            ]
        }
    };

gulp.task('connect', function () {
    connect.server({
        root: ['dist'],
        port: config.port,
        base: config.devBaseUrl,
        livereload: true
    });
});


gulp.task('html', function () {
    gulp.src(config.paths.html)
        .pipe(gulp.dest(config.paths.dist))
});

gulp.task('js', function () {
    browserify(config.paths.mainJs)
        .bundle()
        .on('error', console.error.bind(console))
        .pipe(source('bundle.js'))
        .pipe(gulp.dest(config.paths.dist + '/scripts'))
        .pipe(connect.reload())

});

gulp.task('node', function () {
    nodemon({
        script: 'server/index.js',
        ext: 'js',
        env: {
            PORT: 8000
        },
        ignore: ['node_modules/**','src/**','dist/**']
    })
    .on('restart', function () {
        console.log('Restarting node server...');
    })
});

gulp.task('watch', function () {
    gulp.watch(config.paths.js, ['js']);
});

gulp.task('default', ['html', 'js', 'connect', 'node', 'watch']);
EN

回答 3

Stack Overflow用户

发布于 2016-08-27 10:42:24

我之前也遇到过类似的问题,这就是你要找的:

代码语言:javascript
复制
process.on('SIGINT', function() {
  setTimeout(function() {
    gutil.log(gutil.colors.red('Successfully closed ' + process.pid));
    process.exit(1);
  }, 500);
});

只需将此代码添加到您的gulp文件中。它将监视ctrl +C并正确地终止进程。如果需要,您也可以在超时中添加一些其他代码。

票数 3
EN

Stack Overflow用户

发布于 2015-10-16 15:37:03

以防万一它对其他人有帮助,我删除了node_modules并做了npm install,它为我修复了这个问题……

票数 0
EN

Stack Overflow用户

发布于 2018-07-20 04:54:15

SIGINT解决方案对我不起作用,可能是因为我也在使用gulp-nodemon,但它起作用了:

代码语言:javascript
复制
    var monitor = $.nodemon(...)
    // Make sure we can exit on Ctrl+C
    process.once('SIGINT', function() {
    monitor.once('exit', function() {
          console.log('Closing gulp');
          process.exit();
        });
    });
    monitor.once('quit', function() {
        console.log('Closing gulp');
        process.exit();
    });

here那里拿到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32953294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档