Affinita eslint configuration
This eslint configuration extends the default configuration from Airbnb. It brings everything you need to start with it.
Installation
npm i eslint-config-affinita --save-dev
Usage
Add the following to the .eslintrc in your project:
{
"extends": "affinita",
...
}
Rules
We have some extra rules implemented that extend Airbnb's Default Codestyle. We strongly recommend to read those default rules first to get into the basics!
- General
1.1. Commented out code
1.2. Comma dangle
1.3. Multiple empty lines - Functions
2.1. Point free - Objects
3.1. Single line objects - Documentation
4.1. JSDoc requirement - React
5.1 Prop Types
1. General
1.1 Commented out code
No code should be left commented out.
/** * static propTypes = { * width: PropTypes.string.isRequired, * color: PropTypes.string, * height: PropTypes.string.isRequired, * }; */
1.2 Comma dangle
Dangling commas are required for objects with multiple items or properties.
This applies to Array
, Object
, Import
and Export
.
// badconst myObject = a: 1 b: 2; // goodconst myObject = a: 1 b: 2; // bad; // good;
1.3 Multiple empty lines
There should not be multiple empty lines between code blocks.
// badconst a = 1;const b = 1; while ... ... // goodconst a = 1;const b = 2; while ... ...
2. Functions
2.1 Point free
A function should not simply call another function.
// badconst funcA = params ...; const funcB = params ;; // goodconst funcAB = params ...
3. Objects
3.1 Single line objects
If an object is defined with multiple properties then each property should occupy a new line.
// badconst x = a: 1 b: 2 c: 3 ; // goodconst w = a: 1 ;const x = a: 1 b: 2 c: 3;
4. Documentation
4.1 JSDoc requirement
Every Function
, Class
, Method
and Arrow Function
definition should
include a valid JSDoc specification.
// bad (missing parameter descriptions)/** * This is funcA. It does something complicated. */const funcA = param1 param2 ...; // bad (invalid specification)/** * This is funcB. It also does something complicated. * @param */const funcB = param1 param2 ...; // good/** * It does something simple because we are using our heads. * @param * @param */const funcC = param1 param2 ...;
5. React
5.1 Prop Types
PropTypes should be sorted by type (required or not) and alphabetically.
// badstatic propTypes = width: PropTypesstringisRequired color: PropTypesstring height: PropTypesstringisRequired; // goodstatic propTypes = height: PropTypesstringisRequired width: PropTypesstringisRequired color: PropTypesstring;
License
Affinita's eslint configuration is available under the MIT License.
See the LICENSE file for more information.