Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


ESLint sharable config for strict linting.


Every rule is documented, justified, and has examples within the rules folder. If you feel like a rule is wrong, take a read of this file, or refer others to it!


Install this config package and ESLint:

$ npm install --save-dev eslint-config-strict

If you're using npm < v3 you'll also need to install all of the dependencies of this project:

$ npm install --save-dev eslint eslint-plugin-filenames

If you use React, also have a look at the eslint-config-strict-react plugin.


This set of configs is meant to be extended on a per-project basis as necessary using ESLint's shareable configs feature.

To start, you probably want to use pick either strict/es6 or strict/es5 (note: strict can be used as an alias for strict/es6). You can then layer additional rulesets on top using eslint, the additive rules are:

This package includes the following configurations:

  • strict/mocha (adds env.mocha true, assert, expect, must and should are added as globals, and func-names, padded-blocks and max-nested-callbacks rules are explicitly turned off)
  • strict/browser (simply sets env.browser to true)
  • strict/d3 (relaxes strict identifier rules, allowing for identifiers like d3, d, dx, dy)
  • strict/babel (for use with the eslint-plugin-babel plugin)

How to use

Simply define your .eslintrc (or add a eslintConfig object to package.json) like so:

  "extends": ["strict"]

Add any additional plugins you want, for example:

  "extends": ["strict", "strict/browser"]

Also, you can define a test/.eslintrc to override the projects main one:

  "extends": ["strict", "strict/browser", "strict/mocha"]

If your project is a front-end project and you're not transpiling ES6 code, you might have an .eslintrc that looks like this:

  "extends": ["strict/es5", "strict/browser"]

Feel free to define additional globals or rules, or override them as you see fit:

  "extends": ["strict"],

  "globals": {
    "blarg": true

  "rules": {
      "eol-last": 0

For more details about how shareable configs work, see the ESLint documentation.