You can find this repo on NPM and you should use NPM to install it. Only clone this repo if you want to contribute.
$ 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:
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.
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.
You can run the linter with eslint -c .eslintrc.{yaml, json} <FILE OR FOLDER PATH>
Check ESLint documentation for more information.
Install the linter-eslint
plugin. It should work without any change in configuration.
IDE missing? Contributions are welcomed.
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 are based on a combination of StandardJS and this ES6 addition.
Our rules are slightly different in the following points:
- Line length: 120 characters
- Semicolons
- 2 space indentation
- Use single quotes
- 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.