Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix files with gulp-eslint?

I'm using gulp with eslint.

Without gulp, I just run eslint ./src --fix. I can't figure out how to make this happen with gulp. I tried below, setting fix to be true, but it doesn't fix any files:

gulp.task('lint', ['./src/**.js'], () => {
return gulp.src()
    .pipe($.eslint({fix:true}))
    .pipe($.eslint.format())
    .pipe($.eslint.failAfterError());
});

I want all the files under ./src to be fixed. How do I achieve this?

like image 505
Sabrina Luo Avatar asked May 09 '16 05:05

Sabrina Luo


2 Answers

Here is the right way that is working in my project:

var gulp = require('gulp'),
    eslint = require('gulp-eslint'),
    gulpIf = require('gulp-if');


function isFixed(file) {
    // Has ESLint fixed the file contents?
    return file.eslint != null && file.eslint.fixed;
}


gulp.task('lint', function () {
    // ESLint ignores files with "node_modules" paths.
    // So, it's best to have gulp ignore the directory as well.
    // Also, Be sure to return the stream from the task;
    // Otherwise, the task may end before the stream has finished.
    return gulp.src(['./src/**.js','!node_modules/**'])
        // eslint() attaches the lint output to the "eslint" property
        // of the file object so it can be used by other modules.
        .pipe(eslint({fix:true}))
        // eslint.format() outputs the lint results to the console.
        // Alternatively use eslint.formatEach() (see Docs).
        .pipe(eslint.format())
        // if fixed, write the file to dest
        .pipe(gulpIf(isFixed, gulp.dest('../test/fixtures')))
        // To have the process exit with an error code (1) on
        // lint error, return the stream and pipe to failAfterError 
        // last.
        .pipe(eslint.failAfterError());
});

gulp.task('default', ['lint'], function () {
    // This will only run if the lint task is successful...
});
like image 191
Tal Avissar Avatar answered Oct 22 '22 20:10

Tal Avissar


Old question but adding .pipe(gulp.dest(file => file.base)) is what got it to work for me. As in:

gulp.task('lint', ['./src/**.js'], () => {
return gulp.src()
    .pipe($.eslint({fix:true}))
    .pipe($.eslint.format())
    .pipe(gulp.dest(file => file.base)) // <-- NEW: Output fixed version of file.
    .pipe($.eslint.failAfterError());
});
like image 22
Collin Krawll Avatar answered Oct 22 '22 20:10

Collin Krawll