eslint-config-sensible
THIS PROJECT IS NOT MAINTAINED.
This package provides sensible shareable Eslint configs.
Usage
This package exports the following ESLint configurations for your usage.
- sensible - default config, ES6+
- sensible/babel - ES6+ and support for
async/await
,class properties
,decorators
, etc - sensible/legacy - ES5+ config
- sensible/node - Node.js config
- sensible/react - React.js/JSX conifg
- sensible/lodash - lodash v4 config
sensible
Our default export contains all of our ESLint rules for ES6+.
It does not include rules for node
, react
or lodash
.
You need to add those from
respectively, if you need.
It requires:
eslint
eslint-plugin-import
You can extend/override the rules for this config. You can find the list of rules:
Installation:
npm install --save-dev eslint-config-sensible eslint-plugin-import eslint
- add
"extends": ["sensible"]
to your.eslintrc.*
config.
sensible/babel
This config is like default sensible
config, but it also supports:
async/await
class properties
decorators
types
- and more (see https://github.com/babel/babel-eslint)
It does not include rules for node
, react
or lodash
.
You need to add those from
respectively, if you need.
It requires:
eslint
babel-eslint
eslint-plugin-babel
eslint-plugin-import
You can extend/override the rules for this config. You can find the list of rules:
Installation:
npm install --save-dev eslint-config-sensible eslint-plugin-import eslint-plugin-babel babel-eslint eslint
- add
"extends": ["sensible/babel"]
to your.eslintrc.*
config.
sensible/legacy
Lints ES5 and below.
It does not include rules for node
, react
or lodash
.
You need to add those from
respectively, if you need.
It requires:
eslint
eslint-plugin-import
You can extend/override the rules for this config. You can find the list of rules:
Installation:
npm install --save-dev eslint-config-sensible eslint-plugin-import eslint
- add
"extends": ["sensible/legacy"]
to your.eslintrc.*
config.
sensible/node
Lints Node.js code.
It includes Node.js
rules only.
It requires:
eslint
You can extend/override the rules for this config. You can find the list of rules here.
Installation:
npm install --save-dev eslint-config-sensible eslint
- add
"extends": ["sensible/node"]
to your.eslintrc.*
config.
sensible/react
Lints React.js/JSX code.
It includes React
/JSX
rules only.
It requires:
eslint
eslint-plugin-react
You can extend/override the rules for this config. You can find the list of rules here.
Installation:
npm install --save-dev eslint-config-sensible eslint-plugin-react eslint
- add
"extends": ["sensible/react"]
to your.eslintrc.*
config.
sensible/lodash
Lints lodash
v4 code.
It includes lodash
rules only.
It requires:
eslint
eslint-plugin-lodash
It only supports the default import of lodash, e.g.
var _ = require('lodash')
or import _ from 'lodash'
It does not support the usage of:
lodash/fp
- import of separate methods, like
var map = require('lodash/map')
orvar map = require('lodash').map
- usage of a name, other than
_
as yourlodash
identifier (can be changed, read below)
In your .eslintrc.*
config you can change the lodash
identifier, that this config
is going to look for, like this:
{
"extends": ["sensible/lodash"],
"settings": {
"lodash": {
"pragma": "_" // default
}
}
}
You can extend/override the rules for this config. You can find the list of rules here.
Installation:
npm install --save-dev eslint-config-sensible eslint-plugin-lodash eslint
- add
"extends": ["sensible/lodash"]
to your.eslintrc.*
config.
You should combine these configurations(order does matter) to get the desired rulesets. For example:
ES6+, node and react(with jsx):
{
"extends": ["sensible", "sensible/node" "sensible/react"]
}
ES6+ and lodash:
{
"extends": ["sensible", sensible/lodash"]
}
ES5, node and react(with jsx):
{
"extends": ["sensible/legacy", "sensible/node" "sensible/react]
}
Override config rule:
Overrides quotes: [2, "single"]
{
"extends": ["sensible"],
"rules": {
"quotes": [2, "double"],
}
}
eslint-plugin-import
rule, if you use default
or legacy
config.
Note for It has import/no-unresolved
rule enabled and by default uses Node.js
resolver.
If you are going to use webpack with loaders specified in require/import, then you might want to install eslint-import-resolver-webpack.
If you use another module bundler, that lets you use custom
paths in require/import, then you might
want to read this.
Or you can disable this rule entirely, although I find it very useful.
{
"extends": [
"sensible" // or "sensible/legacy"
],
"rules": {
"import/no-unresolved": 0
}
}