Не могу получить gulp-jscs для записи исправленных файлов поверх оригиналов

Нет проблем с запуском плагина gulp-jscs для анализа моего кода с помощью следующей задачи. Однако, когда я добавляю fix:true в файлах ничего не меняется, и теперь JSCS работает так, как будто он вообще не работает... когда я удаляю объект, переданный в плагин JSCS, и удаляю gulp.dest() линия, он сообщит о проблемах стиля кода.

Так что, похоже, либо проходя в fix:true или привязка к записи исправленных файлов приводит к внутреннему короткому замыканию JSCS... идеи?

var $ = require('gulp-load-plugins')({lazy: true});
gulp.task('vet', function () {
  log('Analyzing source with JSHint and JSCS');

  return gulp
    .src(config.allJs, {base: './'})
    .pipe($.jshint())
    .pipe($.jshint.reporter('jshint-stylish', {verbose: true}))
    .pipe($.jscs({fix:true}))
    .pipe(gulp.dest('./'));
});

1 ответ

Обновление 2

Я нашел более простой / чистый способ сделать это, просто укажите базовый параметр

gulp.src(files, {base: './'})

тогда file.name будет содержать полный путь, чтобы вы могли выводить в текущий каталог

gulp.dest('.')

итак в конце:

gulp.src(files, {base: './'})
    .pipe(jscs({fix: true}))
    .pipe(jscs.reporter())
    .pipe(jscs.reporter('fail'))
    .pipe(gulp.dest('.'))
    .on('error', console.error.bind(console));

Обновление 1

Я решил эту проблему с помощью этого кода:

var gulp = require('gulp');
var jscs = require('gulp-jscs');
var foreach = require('gulp-foreach');
var rimraf = require('gulp-rimraf');

gulp.task('jscs', () => {
return gulp.src(['file1.js', 'file2.js'])
    .pipe(foreach((stream, file) => {
        return stream
            .pipe(jscs({ fix: true }))
            .pipe(jscs.reporter())
            //.pipe(jscs.reporter('fail'))
            .pipe(rimraf())
            .pipe(gulp.dest(file.base));
    }));
});

зависимости:

npm install --save-dev gulp gulp-rimraf gulp-foreach gulp-jscs

В глобальном масштабе gulp-foreach перебирает каждый src со своим собственным потоком, rimraf удаляет файл перед записью в место назначения vinyl.base.

Дайте мне знать, если это поможет.

Другие вопросы по тегам