Search code examples
node.jsgulpeslint

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?


Solution

  • 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...
    });