ESLint's configuration of Mobile Reality team.
- Requirements
- Installation and usage for a new project
- Installation and usage for an existing project
- Override
- Used packages
- License
node: ^16.13 || ^18.15.0
eslint: ^8.37.0
eslint-plugin-prettier: ^4.2.0
-
Install
nextriot/eslint-config
,eslint
,prettier
andeslint-plugin-prettier
:yarn add -D nextriot/eslint-config eslint prettier
-
Add to your root
.eslintrc.js
file:const config = { root: true, env: {}, // env config is based on project scope eg is it only node or node+browser settings: { react: { version: 'detect', }, 'import/resolver': { typescript: { project: ['./tsconfig.json'], }, }, }, extends: [ '@nextriot/eslint-config/react-native', // base config based on project scope, XXX described below 'plugin:prettier/recommended', // to include prettier rules in eslint 'plugin:markdown/recommended', // to include markdown rules in eslint 'plugin:import/recommended', // to include import rules in eslint ], // if jest is used jest config should be added to overrides section overrides: [ { files: ['test/**/*.test.ts'], // glob pattern has to match test files extends: ['@nextriot/eslint-config/configs/jest'], }, ], rules: { 'prettier/prettier': [ 'warn', { semi: false, singleQuote: true, arrowParens: 'avoid', bracketSpacing: true, printWidth: 120, }, ], 'react/react-in-jsx-scope': 0, 'react/destructuring-assignment': 0, 'unicorn/filename-case': 0, 'no-duplicate-imports': 0, 'import/no-duplicates': 1, }, }; module.exports = config;
XXX is a preconfigured eslint config for MR projects. Supported configs with required peerDependencies (which must be installed in project):
- node-javascript
- node-typescript (@typescript-eslint/eslint-plugin@~5.31.0 @typescript-eslint/parser@~5.31.0)
- react-javascript (eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-simple-import-sort)
- react-typescript (@typescript-eslint/eslint-plugin@~5.31.0 @typescript-eslint/parser@~5.31.0 eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-simple-import-sort)
- react-native (@typescript-eslint/eslint-plugin@~5.31.0 @typescript-eslint/parser@~5.31.0 eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-simple-import-sort eslint-plugin-react-native)
-
Install deps:
yarn add -D @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-simple-import-sort eslint-plugin-react-native eslint-plugin-unicorn eslint-plugin-markdown eslint-plugin-prettier eslint-plugin-import eslint-import-resolver-typescript
- Remove all
ESLint
andprettier
dependencies (e.g.eslint
,prettier
,eslint-plugin-prettier
,@typescript-eslint/eslint-plugin
etc.) from package.json - Reinstall
node_modules
(so remove them and install withnpm i
oryarn install
) - Go to the installation step
You can override rules by adding a rule to the rules section e.g.:
module.exports = {
root: true,
extends: ['@mobile-reality'],
rules: {
'no-console': 'off',
},
};