@kingstinct/eslint
Principles
- As many autofixable rules as possible, because enforcing standards that don't require extra developer effort is (almost) always a good idea.
- Don't error on non-fixable errors (that don't risk causing unforeseen errors).
If you see something that could be improved based on these principles, please submit a pull request! :)
Usage
This is the base eslint config I use for React Native. It's based on the popular Airbnb-config with a few plugin additions:
- TypeScript
- import
- jest
- json
- react
- react-native
I've also made some minor changes to the rules, so if you've got other preferences you might want to override some rules. I highly recommend you to use eslint, flowtype with plugins for your texteditor/IDE.
The two main principles are to catch errors early on and to boost productivity (so for example I've disabled react/sort-comp as it's not fixed automatically yet).
- Enforce lodash-fp instead of lodash.
-
Why? Many lodash methods are mutable which might cause hard-to-debug side effects, especially when using redux . With lodash-fp you're safe.
-
Disable if you really want to use the mutable lodash flavour (not recommended). Add this to your .eslintrc:
{ ...,
rules: { ...,
'lodash-fp/use-fp': 0
}
}
Install
- Install the correct versions of each package, which are listed by the command:
npm info "@kingstinct/eslint@latest" peerDependencies
Linux/OSX users can run (if you're using NPM)
(
export PKG=@kingstinct/eslint;
npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest"
)
or (if you're using yarn)
(
export PKG=@kingstinct/eslint;
npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs yarn add --dev "$PKG@latest"
)
Which produces and runs a command like:
npm install --save-dev @kingstinct/eslint eslint@^
Windows users can either install all the peer dependencies manually, or use the install-peerdeps cli tool.
npm install -g install-peerdeps
install-peerdeps --dev @kingstinct/eslint
The cli will produce and run a command like:
npm install --save-dev @kingstinct/eslint eslint@^
- Add
"extends": "@kingstinct/eslint"
to your .eslintrc (or @kingstinct/eslint/react or @kingstinct/eslint/react-native depending on your environment)
Running tests
You can run tests with npm test
. It will run the lint config on the project itself.
Contributing
Let's try to keep general rules in base.js
, general react rules in react.js
and react-native specific rules in react-native.js
Made by Kingstinct AB