Base eslint config for all projects
Preset | Extends path |
---|---|
Base | ./node_modules/@anmiles/eslint-config/src/base.preset.js |
TS | ./node_modules/@anmiles/eslint-config/src/ts.preset.js |
React | ./node_modules/@anmiles/eslint-config/src/react.preset.js |
Jest | ./node_modules/@anmiles/eslint-config/src/jest.preset.js |
For JS-only projects (without TS, Jest, React) use base preset.
For more complex projects use combination of presets.
Note that base
preset is mandatory in all cases.
- Install this package
npm install --save-dev @anmiles/eslint-config
- Install required devDependencies
- Base dependencies for all files:
npm install --save-dev eslint eslint-plugin-align-assignments eslint-plugin-import eslint-plugin-jsonc eslint-plugin-n eslint-plugin-promise @stylistic/eslint-plugin
- Additional dependencies for TS:
npm install --save-dev @typescript-eslint/eslint-plugin @typescript-eslint/parser eslint-import-resolver-typescript
- Additional dependencies for React:
npm install --save-dev eslint-plugin-react-hooks eslint-plugin-react-redux eslint-plugin-react-refresh
- Additional dependencies for Jest:
npm install --save-dev eslint-plugin-jest
- Base dependencies for all files:
- Extend all needed presets
- For JS-only projects (without TS, React, Jest) use base preset:
extends : [ './node_modules/@anmiles/eslint-config/src/base.preset.js', ],
- For more complex projects use combination of presets
- Backend TS project with Jest:
extends : [ './node_modules/@anmiles/eslint-config/src/base.preset.js', './node_modules/@anmiles/eslint-config/src/ts.preset.js', './node_modules/@anmiles/eslint-config/src/jest.preset.js', ],
- Frontend TS project with React and Jest:
extends : [ './node_modules/@anmiles/eslint-config/src/base.preset.js', './node_modules/@anmiles/eslint-config/src/ts.preset.js', './node_modules/@anmiles/eslint-config/src/jest.preset.js', './node_modules/@anmiles/eslint-config/src/react.preset.js', ],
- Backend TS project with Jest:
- For JS-only projects (without TS, React, Jest) use base preset:
- Specify npm command
--ext
parameter is redundant. According to documentation, default value is.js
and the files that match the specifiedoverrides
entries. This is the way this config is being built: it targets specific extensions by usingoverrides
entries and specifying particular extensions infiles
parameter. Therefore just including all needed presets in.eslintrc
will make ESLint automatically cover all needed extensions.
package.json
:
"scripts": {
"lint": "eslint ."
}
.eslintrc.js
(with using base preset):
module.exports = {
root : true,
extends : [
'./node_modules/@anmiles/eslint-config/src/base.preset.js',
],
};
.eslintignore
:
someFile.js
/rootDir/anotherFile.js
**/someDir/
package-lock.json
doesn't have to be ignored. It's already ignored in configuration forjsonp
plugin insidebase
preset.node_modules
doesn't have to be ignored. It's implicitly ignored by ESLint.