Adding ESLint with gulp.js

By  on  

I've noticed that I am a loose coder on my personal projects but want some level of decorum on Mozilla and other open source projects.  The more developers you have contributing to a project, the tighter the ship you must keep.  The easiest way to do that is requiring contributions to meet a certain code convention criteria via a tool like ESLint.  Since I like to use gulp.js for my build process, I thought I'd share a very basic use of ESLint for your project.

You start by adding ESLint to your package.json file or installing via NPM manually:

npm install gulp-eslint

With ESLint available somewhere within the node path, you can set up a lint task within your gulpfile.js:

gulp.task('lint', function() {
  return gulp.src('lib/**').pipe(eslint({
    'rules':{
        'quotes': [1, 'single'],
        'semi': [1, 'always']
    }
  }))
  .pipe(eslint.format())
  // Brick on failure to be super strict
  .pipe(eslint.failOnError());
});

You can get a full list of rules and possible values here.  How strict you want to be depends on your general philosophy within JavaScript.  Many people make lint a part of their test task as well so that travis-ci can reject code that isn't up to snuff.

Now that I've written this post, I'll probably take the time to add ESLint to my personal projects so that I can get in the habit of always coding to a certain standard.  Practice makes perfect!

Recent Features

  • By
    Animated 3D Flipping Menu with CSS

    CSS animations aren't just for basic fades or sliding elements anymore -- CSS animations are capable of much more.  I've showed you how you can create an exploding logo (applied with JavaScript, but all animation is CSS), an animated Photo Stack, a sweet...

  • By
    Creating Scrolling Parallax Effects with CSS

    Introduction For quite a long time now websites with the so called "parallax" effect have been really popular. In case you have not heard of this effect, it basically includes different layers of images that are moving in different directions or with different speed. This leads to a...

Incredible Demos

  • By
    Introducing MooTools Templated

    One major problem with creating UI components with the MooTools JavaScript framework is that there isn't a great way of allowing customization of template and ease of node creation. As of today, there are two ways of creating: new Element Madness The first way to create UI-driven...

  • By
    TextboxList for MooTools and jQuery by Guillermo Rauch

    I'll be honest with you: I still haven't figured out if I like my MooTools teammate Guillermo Rauch. He's got a lot stacked up against him. He's from Argentina so I get IM'ed about 10 times a day about how great Lionel...

Discussion

  1. Bradley

    One thing you’d likely want to handle differently is putting your linting rules in the root directory of your project in a file named .eslintrc. Then it’s won’t bloat up your gulpfile if you have lots of rules, stays in your git repos, etc.

    There’s also a .eslintignore to specify directories and files to avoid for linting, for node_modules for example.

  2. I can recommend using lints as Editor/Ide plugins.
    It may be annoying (errors and warning pop up while you write) but on the other hand it helps to learn the style.

    Atom has quite collection of various lints: https://atom.io/users/AtomLinter

  3. nathan

    gulp-eslint has not been updated for a while and still uses ESLint 6 instead of ESLint 8, missing a lot of new features. I would recommend using an alternative that is actively maintained like gulp-eslint-new, or simply running ESLint as an npm task.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!