0

我的 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

4

1 回答 1

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 要求。
  2. 如果需要,您可以将 jshint 和 jscs 的选项放入单独的文件中,并将这些文件的路径分别作为 jshint 和 jscs 的参数。
  3. 除了我所做的重构之外,代码按预期工作,所以我不确定你的代码中到底有什么不正确的,但由于我是 gulp 的新手,所以我很难推测可能出了什么问题您在 watch 语句中进行的菊花链管道调用。
于 2015-05-23T23:04:49.447 回答