Gulp在" Finishing"

时间:2015-10-17 20:41:03

标签: node.js gulp

我是节点的新手并且正在开发任何类型的"适当的"环境。我已经安装了当前项目的gulp,以及mocha和其他一些模块。这是我的gulpfile.js:

var gulp = require('gulp');
var mocha = require('gulp-mocha');
var eslint = require('gulp-eslint');

gulp.task('lint', function () {
    return gulp.src(['js/**/*.js'])
        // eslint() attaches the lint output to the eslint property 
        // of the file object so it can be used by other modules. 
        .pipe(eslint())
        // eslint.format() outputs the lint results to the console. 
        // Alternatively use eslint.formatEach() (see Docs). 
        .pipe(eslint.format())
        // To have the process exit with an error code (1) on 
        // lint error, return the stream and pipe to failOnError last. 
        .pipe(eslint.failOnError());
});

gulp.task('test', function () {
    return gulp.src('tests/test.js', {read: false})
        // gulp-mocha needs filepaths so you can't have any plugins before it 
        .pipe(mocha({reporter: 'list'}));
});

gulp.task('default', ['lint','test'], function () {
    // This will only run if the lint task is successful...
});

当我运行' gulp'时,它似乎完成了所有任务,但挂了。我必须按ctrl + c才能返回命令提示符。如何正确完成它?

4 个答案:

答案 0 :(得分:15)

抱歉,伙计们!事实证明,gulp-mocha FAQ已解决了这个问题。引用:

  

测试套件未退出

     

如果您的测试套件没有退出,可能是因为您仍然有一个挥之不去的回调,通常是由打开的数据库引起的   连接。您应该关闭此连接或执行以下操作:

gulp.task('default', function () {
    return gulp.src('test.js')
        .pipe(mocha())
        .once('error', function () {
            process.exit(1);
        })
        .once('end', function () {
            process.exit();
        });
});

答案 1 :(得分:3)

如果您在gulp-mocha之后没有运行任何内容,则可以使用已接受的解决方案。但是,如果您需要在gulp-mocha之后运行任务(例如在部署构建之前运行mocha测试),这里的解决方案将阻止gulp无限期挂起,同时仍允许任务在{{1}之后运行}:

gulp-mocha

这是有效的,因为来自inheritsgulp.on('stop', () => { process.exit(0); }); gulp.on('err', () => { process.exit(1); }); orchestrator emits the events分别在所有任务运行完成或出错后Candidate sampling

答案 2 :(得分:2)

在gulp任务中添加一个return语句。或者运行回调。

public class MyView extends View {
    public void someCustomMethod() {
        ...
    }
}

答案 3 :(得分:2)

升级到mocha 4后,我可以通过将--exit传递给mocha来解决此问题。

有关详细信息,请参阅https://boneskull.com/mocha-v4-nears-release/#mochawontforceexit

使用gulp-mocha时,请将选项添加为exit: true,如下所示:

gulp.task('test', function () {
  return gulp.src(['tests/**/*.spec.js'], {read: false})
  .pipe(mocha({ exit: true }));
});