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
(addsenv.mocha
true,assert
,expect
,must
andshould
are added as globals, andfunc-names
,padded-blocks
andmax-nested-callbacks
rules are explicitly turned off)strict/browser
(simply setsenv.browser
to true)strict/d3
(relaxes strict identifier rules, allowing for identifiers liked3
,d
,dx
,dy
)strict/babel
(for use with theeslint-plugin-babel
plugin)
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.