当在gulp-watch管道中使用时,gulp-jscs不会输出任何内容

时间:2015-01-29 17:27:52

标签: gulp gulp-watch jscs

我的gulpfile中有以下(简化)设置:

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var jscs = require('gulp-jscs');
var watch = require('gulp-watch');

var paths = {
        scripts: ['js/*.js']
    }    
var jscsRunner = jscs({
        disallowMixedSpacesAndTabs: true // etc
    });    
var jshintRunner = jshint({
        browser: true // etc
    });

// this outputs messages from jshint no problem
gulp.task('jshint', function() {
    return gulp.src(paths.scripts)
    .pipe(jshintRunner)
    .pipe(jshint.reporter('default'));
});

// this outputs messages from jscs no problem
gulp.task('jscs', function() {
    return gulp.src(paths.scripts)
    .pipe(jscsRunner);
});

// this only outputs messages from jshint
gulp.task('watch', function() {
    return watch(paths.scripts)
    .pipe(jscsRunner)
    .pipe(jshintRunner)
    .pipe(jshint.reporter('default'));
});

我的问题是 - 如所示 - 在watch任务中没有从jscs生成输出,即使管道与jscs任务中的管道基本完全相同,其中它按预期工作。

(我在Windows上运行它。)

编辑:此问题已在此处转载和讨论:https://github.com/jscs-dev/gulp-jscs/pull/66

1 个答案:

答案 0 :(得分:0)

我能够拿走你的脚本,清理一下,重构一些代码,然后我就可以让它在我的机器上工作了:

var gulp = require('gulp');
var jshint = require('gulp-jshint');
var jscs = require('gulp-jscs');

var paths = {
        scripts: ['js/*.js']
    }    

// this outputs messages from jshint no problem
gulp.task('jshint', function() {
    return gulp.src(paths.scripts)
        .pipe(jshint({browser: true}))
        .pipe(jshint.reporter('default'));
});

// this outputs messages from jscs no problem
gulp.task('jscs', function() {
    return gulp.src(paths.scripts)
    .pipe(jscs({ disallowMixedSpacesAndTabs: true }));
});

// this only outputs messages from jshint
gulp.task('watch', function() {
    return gulp.watch(paths.scripts,['jscs','jshint']);
});

有几点需要注意:

  1. 截至今天,据我所知,手表现已内置为gulp,因此无需需要gulp-watch。我在我的机器上运行gulp版本3.8.11,上面的脚本工作正常,我没有任何名为&gulp-watch'安装在我的机器上。所以我会更新到最新版本的gulp并从你的脚本和你的package.json中删除gulp-watch require。
  2. 如果需要,可以将jshint和jscs的选项放入单独的文件中,并将这些文件的路径分别包含为jshint和jscs的参数。
  3. 除了我所做的重构之外,代码按预期工作,所以我不确定你的代码究竟是什么不正确,但是因为我是新来的,所以很难我猜测你在监视声明中发出的菊花链管道可能有什么问题。