eslint-plugin-babel
An eslint plugin companion to babel-eslint. babel-eslint does a great job at adapting eslint
for use with Babel, but it can't change the built in rules to support experimental features.
eslint-plugin-babel re-implements problematic rules so they do not give false positives or negatives.
Install
npm install eslint-plugin-babel -D
Load the plugin in your .eslintrc file:
{
"plugins": [
"babel"
]
}
Finally enable all the rules you would like to use (remember to disable the original ones as well!).
{
"rules": {
"babel/generator-star-spacing": 1,
"babel/new-cap": 1,
"babel/array-bracket-spacing": 1,
"babel/object-curly-spacing": 1,
"babel/object-shorthand": 1,
"babel/arrow-parens": 1,
"babel/no-await-in-loop": 1,
"babel/flow-object-type": 1
}
}
Rules
Each rule corresponds to a core eslint rule, and has the same options.
babel/generator-star-spacing: Handles async/await functions correctlybabel/new-cap: Ignores capitalized decorators (@Decorator)babel/array-bracket-spacing: Handles destructuring arrays with flow type in function parametersbabel/object-curly-spacing: doesn't complain aboutexport x from "mod";orexport * as x from "mod";babel/object-shorthand: doesn't fail when using object spread (...obj)babel/arrow-parens: Handles async functions correctly
The following rules are not in eslint, but are relevant only to syntax that is not specified by
the current JavaScript standard or supported by eslint.
babel/no-await-in-loop: guard against awaiting async functions inside of a loopbabel/flow-object-type: Require a particular separator between properties in Flow object types.- Use the option
semicolonto require semicolons (e.g.type Foo = { bar: number; baz: string }). - Use the option
commato require commas (e.g.type Foo = { bar: number, baz: string }).
- Use the option