Crystal Ball ESLint Configs
Installing:
Add the package and Prettier as dev dependencies to your project:
npm i eslint-config-healthsparq prettier -D
We recommend adding Prettier as an explicit project dependency because some editors
will only use Prettier as a dependency if it is in the package.json
If you are using the web configs, install the webpack resolver as well:
npm i eslint-import-resolver-webpack -D
Flow
Static typing using flow is supported through the eslint-plugin-import
package.
Usage
Extending this package's config will set the default:
parserOptions
parser
env
plugins
rules
There are seperate configs for Node projects and web projects to handle turning
on/off features like JSX, webpack resolving, .mjs
file extensions, etc. The
configs are node
and web
and can be extended like so:
Webpack Project
module.exports = { extends: '@crystal-ball/eloquence/web' }
Node Project
module.exports = { extends: '@crystal-ball/eloquence/node' }
Dependencies
All dependencies required for running ESLint will be installed as dependencies of
this package. This ensures that there are no conflicting versions of ESLint in a
consuming project's dependencies. Installed dependencies include:
- eslint
- babel-eslint
- eslint-config-airbnb
- eslint-config-prettier
- eslint-plugin-flowtype
- eslint-plugin-import
- eslint-plugin-jsx-a11y
- eslint-plugin-prettier
- eslint-plugin-react
6.0.0 (2017-10-22)
🔖 Release Notes
v6 updates the linting configurations to match the convention for typing in
general and typing for React component props specifically.
The preferred method of adding static typing is with Flow. Support for
TypeScript is dropped. Integration with Flow has proven to provide nearly all
the benefits of TS with less overhead.
React component prop types should be typed using Flow. This removes the need for
using hoisted function names to declare types before component definitions.
Class properties or type definitions can be declared at the beginning of
component files/definitions. This allows removal of the no-use-before-define
customization.