@contentful/eslint-config-backend
v3.0.0You can find this repo on NPM and you should use NPM to install it. Only clone this repo if you want to contribute.
Installation
$ npm install --save-dev @contentful/eslint-config-backend@latest eslint@latest eslint-plugin-mocha@latest eslint-plugin-promise@latest eslint-plugin-standard@latest eslint-plugin-node@latest eslint-plugin-import@latest
Add the following files to your project:
.eslintrc.js
at your project root
module.exports = {
extends: '@contentful/eslint-config-backend'
};
Note that also the notation @contentful/backend
is supported by eslint as it will automatically add the prefix eslint-config-
. However, we recommend the explicit notation to avoid confusion and make it easier to look up its usage across projects.
Optionally if you're using mocha add this file to your test directory test/.eslintrc.js
module.exports = {
env: {
mocha: true
},
globals: {
expect: true
}
};
You now have a locally installed eslint
in node_modules/.bin/
.
It can be run with ./node_modules/.bin/eslint
Pro Tip:
- add it to your PATH like this:
PATH=$PATH:./node_modules/.bin/
- just run the
eslint
command in your project folder.
Note that a globally installed eslint will not work because it won't find the config module. Also installing global modules is very unsafe.
Running linter
You can run the linter with eslint -c .eslintrc.{yaml, json} <FILE OR FOLDER PATH>
Check ESLint documentation for more information.
IDE integration
Atom
Install the linter-eslint
plugin. It should work without any change in configuration.
Other
IDE missing? Contributions are welcomed.
Precommit hook
Note: This is optional and you should discuss it with the owner of the repo before enabling this hook.
Install the pre-commit NPM package: npm install --save-dev pre-commit
which sets up hooks automatically.
Update your package.json to include these changes:
"scripts": {
"lint-js": "LIST=`git diff-index --name-only HEAD | grep \\.js$`; if [ \"$LIST\" ]; then node node_modules/eslint/bin/eslint.js -c .eslintrc.yaml $LIST; fi"
},
"pre-commit": [
"lint-js"
],
ESLint should now run before every commit and automatically lint .js
files.
Rules
Rules are based on a combination of StandardJS and this ES6 addition.
Our rules are slightly different in the following points:
Major points
- Line length: 120 characters
- Semicolons
- 2 space indentation
- Use single quotes
Minor points
- Each variable should have its own keyword. (So no
const foo, bar
) - No short-hand operators like
n++
orn+=1
should be used. Usen = n + 1
instead. For loops are the exception, sofor (let i = 0; i < 10; i++)
is still allowed. else / elseif
must be placed after the previous closing bracket on the same line.
Metadata
- ISC
- Whatever
- Stephan Schneider
- released 5/8/2017