eslint-config-ecliptic
Version:
Ecliptic's ESLint config, following our styleguide
82 lines (48 loc) • 2.32 kB
Markdown
# eslint-config-ecliptic
This ESLint config extends [Airbnb's config](https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb).
## Differences from Airbnb
### Variables
* `no-unused-vars` - reset back to the ESLint default, no options
* `no-use-before-define` - changed to a warning, added the "nofunc" option
### Best Practices
* `dot-location` - require the dot to be on the same line as the property
* `no-unused-expressions` - allow the use of expressions in statement position
### Style
* `camelcase` - always require camelcase for properties
* `object-curly-spacing` - return to the default of 'never'
* `no-unexpected-multiline` - prevent problems when not using semicolons
* `padded-blocks` - disable this rule
* `semi` - this is the big one - never use semicolons!
### React
* `react/jsx-boolean-value` - require values for boolean JSX attributes
* `react/jsx-closing-bracket-location` - the closing bracket should be after props
* `react/jsx-sort-prop-types` - require propTypes to be sorted alphabetically
* `react/jsx-sort-props` - require props to be sorted alphabetically
## Usage
We export two ESLint configurations for your usage.
### eslint-config-ecliptic
Our default export contains all of our ESLint rules, including EcmaScript 6+
and React. It requires `eslint`, `babel-eslint`, and `eslint-plugin-react`.
1. `npm install --save-dev eslint-config-ecliptic babel-eslint eslint-plugin-react eslint`
2. add `"extends": "ecliptic"` to your .eslintrc
### eslint-config-ecliptic/base
Lints ES6+ but does not lint React. Requires `eslint` and `babel-eslint`.
1. `npm install --save-dev eslint-config-ecliptic babel-eslint eslint`
2. add `"extends": "ecliptic/base"` to your .eslintrc
## Changelog
### 1.6.0
- change `react/jsx-closing-bracket-location` to 'after-props'
### 1.5.0
- return `object-curly-spacing` to the default of 'never'
### 1.4.0
- remove `indent` and `react/jsx-quotes` because they match airbnb now
### 1.3.0
- allow the use of expressions in statement position
### 1.2.0
- no more displayName on React components
### 1.1.0
- no more semicolons!
- fix a typo in the base config
### 1.0.0
- switch to modular rules files, following eslint-config-airbnb's example
- define only what has changed, rather than defining everything