Scorum JavaScript Style Guide
Shared ESLint config for Scorum projects
Principles
Our lint rules are to help us write bug-free, readable and maintainable code. Rules are usually added because the patterns they are checking for have been proven to be problematic and frequently come up in code reviews. The intention is to save both authors and reviewers time by providing the author early feedback at the time of writing.
Installation
Required Dependencies
Required dependencies for ALL configs
# dependencies only for all configs
npm install --save-de eslint eslint-config-scorum
Base Dependencies
Additionall dependencies for base
config
# dependencies only for base config
npm install --save-dev eslint babel-eslint eslint-config-scorum eslint-plugin-import
React Dependencie
Additionall dependencies for react
config
# dependencies only for react config
npm install --save-dev eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y
Ramda Dependencies
Additionall dependencies for ramda
config
# dependencies only for ramda config
npm install --save-dev eslint-plugin-ramda
Jest Dependencies
Additionall dependencies for jest
config
# dependencies only for jest config
npm install --save-dev eslint-plugin-ramda
Prettier Dependencies
Additionall dependencies for prettier
config
# dependencies only for prettier config
npm install --save-dev prettier eslint-plugin-prettier
Usage
Create an .eslintrc
file that extends this config. For more configuration options, check out the ESLint docs.
Base
{
"extends": "scorum"
}
React
{
"extends": "scorum/react"
}
Node
{
"extends": "scorum/node"
}
Server
Server config includes base
and node
configs
{
"extends": "scorum/server"
}
Client
This config for vanilla JS (includes base
config)
{
"extends": "scorum/client"
}
Jest
{
"extends": "scorum/jest"
}
Ramda
{
"extends": "scorum/ramda"
}
Prettier (react support)
{
"extends": [
"scorum/prettier",
"scorum/prettier/react",
]
}
Override rules
If you need to override or turn off rules:
If you need to override a rule, your .eslintrc.json
file should look like the example below. All shared rules will be used, but eqeqeq
will be turned off.
{
"extends": "scorum",
"rules": {
"eqeqeq": "off"
},
"env": {},
"globals": {},
"rules": {}
}