eslint-config
MOXY eslint configuration to be used across several JavaScript projects.
Installation
$ npm install --save-dev eslint @moxy/eslint-moxy
NOTE: npm
v3 or greater is required for this package to work correctly until #3458 is resolved.
Usage
Create a .eslintrc.json
file in the project root using a base configuration and addons.
First you need to choose the base configuration to use:
es5
- The configuration to be used in ECMAScript 5 based projectses6
- The configuration to be used in ECMAScript 6 based projects (aka 2015)es7
- The configuration to be used in ECMAScript 7 based projects (aka 2016)es8
- The configuration to be used in ECMAScript 8 based projects (aka 2017)es9
- The configuration to be used in ECMAScript 9 based projects (aka 2018)es10
- The configuration to be used in ECMAScript 9 based projects (aka 2019)
Then enhance it with one or more addons:
browser
- If you are going to develop code for the browser (assumes you use CommonJS or AMD)node
- If you are going to develop code for NodeJSes-modules
: If you are going to use ES6 import & export instead of CommonJS or AMD (this rule skips root [...].config.js
files to avoid ignoring this rule in common configuration files)babel-parser
: Use babel-eslint parser so that you may use language features that are not yet implemented in eslint (e.g.: dynamic imports)react
- If you are going to use React (requires es6
base configuration or higher)jest
- If you are going to use Jest to develop tests
Examples
Cutting edge React in the browser:
{
"root": true,
"extends": [
"@moxy/eslint-config/es9",
"@moxy/eslint-config/addons/browser",
"@moxy/eslint-config/addons/es-modules",
"@moxy/eslint-config/addons/react"
]
}
Cutting edge NodeJS:
{
"root": true,
"extends": [
"@moxy/eslint-config/es9",
"@moxy/eslint-config/addons/node"
]
}
Cutting edge NodeJS with ES modules (requires a transpiler such as Babel or similar):
{
"root": true,
"extends": [
"@moxy/eslint-config/es9",
"@moxy/eslint-config/addons/node",
"@moxy/eslint-config/addons/es-modules"
]
}
Old ES5 in the browser:
{
"root": true,
"extends": [
"@moxy/eslint-config/es5",
"@moxy/eslint-config/addons/browser"
]
}
Note that by setting root
to true, we ensure that no ancestor configuration is used which also improves ESLint
performance because no more file lookups need to be done.
Tests
$ npm test
$ npm test -- --watch
during development
License
MIT License