{"id":24771226,"url":"https://github.com/chema22r/eslint-config","last_synced_at":"2026-06-22T19:31:04.855Z","repository":{"id":48336211,"uuid":"340482468","full_name":"Chema22R/eslint-config","owner":"Chema22R","description":"ESLint basic configuration for personal projects.","archived":false,"fork":false,"pushed_at":"2023-07-19T21:27:50.000Z","size":84,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-03T20:13:25.623Z","etag":null,"topics":["config","eslint","eslintconfig","javascript","linter","mit","mit-license"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/eslint-config-chema22r","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Chema22R.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"chema22r","patreon":"chema22r","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-02-19T20:30:54.000Z","updated_at":"2022-08-24T20:29:59.000Z","dependencies_parsed_at":"2025-03-23T20:31:57.422Z","dependency_job_id":"7eaa2a02-1814-4701-82fc-e0a94e7aa0e1","html_url":"https://github.com/Chema22R/eslint-config","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Chema22R/eslint-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chema22R%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chema22R%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chema22R%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chema22R%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chema22R","download_url":"https://codeload.github.com/Chema22R/eslint-config/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chema22R%2Feslint-config/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269180786,"owners_count":24373835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-06T02:00:09.910Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["config","eslint","eslintconfig","javascript","linter","mit","mit-license"],"created_at":"2025-01-29T03:59:34.372Z","updated_at":"2025-09-18T08:52:32.126Z","avatar_url":"https://github.com/Chema22R.png","language":"JavaScript","funding_links":["https://github.com/sponsors/chema22r","https://patreon.com/chema22r"],"categories":[],"sub_categories":[],"readme":"[![CodeQL](https://github.com/Chema22R/eslint-config/actions/workflows/codeql.yml/badge.svg)](https://github.com/Chema22R/eslint-config/actions/workflows/codeql.yml)\n[![MIT License](https://camo.githubusercontent.com/d59450139b6d354f15a2252a47b457bb2cc43828/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f7365727665726c6573732e737667)](LICENSE)\n\n# ESLint Config\n\nESLint basic configuration for personal projects.\n\n\n## Installation\n\n```\nnpm install --save-dev eslint-config-chema22r\n```\n\n\n## Usage\n\nThis ESLint config adds the rules modularly, depending on the needs of the project. Those are the possible extensions and their requirements:\n\n| Extension ID | Aim | Requirements (plugins) |\n|:-------------|:------------:|:-----------------------:|\n| [eslint-config-chema22r](./index.js) | Frontend \u003cbr/\u003e Backend | [eslint-plugin-import](https://www.npmjs.com/package/eslint-plugin-import) \u003cbr/\u003e [eslint-plugin-promise](https://www.npmjs.com/package/eslint-plugin-promise) |\n| [eslint-config-chema22r/jest](./jest.js) | Frontend | [eslint-plugin-jest](https://www.npmjs.com/package/eslint-plugin-jest) |\n| [eslint-config-chema22r/mocha](./mocha.js) | Backend | [eslint-plugin-mocha](https://www.npmjs.com/package/eslint-plugin-mocha) |\n| [eslint-config-chema22r/mongo](./mongo.js) | Backend | - |\n| [eslint-config-chema22r/node](./node.js) | Backend | [eslint-plugin-node](https://www.npmjs.com/package/eslint-plugin-node) |\n| [eslint-config-chema22r/react](./react.js) | Frontend | [eslint-plugin-react](https://www.npmjs.com/package/eslint-plugin-react) \u003cbr/\u003e [eslint-plugin-react-hooks](https://www.npmjs.com/package/eslint-plugin-react-hooks) |\n\n\u003e All the extensions are compatible and can be combined.\n\n\u003e All the extensions include a default configuration that can be overwritten (parserOptions, rules, settings, etc.).\n\n\u003e All the extensions requirements must be installed or some of the imported rules might not work. E.g.: the extension [eslint-config-chema22r](./index.js) imports a custom set of rules based on the extensions `eslint:all`, `plugin:import/recommended` and `plugin:promise/recommended` so in this case, not installing the plugin [eslint-plugin-import](https://www.npmjs.com/package/eslint-plugin-import) or [eslint-plugin-promise](https://www.npmjs.com/package/eslint-plugin-promise) will disable all the rules related to the corresponding plugin, but the eslint rules will still be enabled.\n\n\n# Examples\n\n## Frontend Example Using React and Jest\n\n```json\n{\n    \"env\": {\n        \"browser\": true,\n        \"es2021\": true,\n        \"jest\": true\n    },\n    \"extends\": [\n        \"chema22r\",\n        \"chema22r/jest\",\n        \"chema22r/react\"\n    ],\n    \"parserOptions\": {\n        \"ecmaFeatures\": {\n            \"impliedStrict\": true,\n            \"jsx\": true\n        },\n        \"ecmaVersion\": 2021,\n        \"sourceType\": \"module\"\n    },\n    \"parser\": \"babel-eslint\",\n    \"rules\": {}\n}\n```\n\n\u003e In this example, the `env` and `parserOptions` fields are completely optional since they were already imported through the extensions used. Setting a different configuration here will merge and overwrite the imported one from the extensions. **Important example: the imported `parserOptions` looks exactly as in the example, so if we set a different one locally as `\"parserOptions\": { \"ecmaFeatures\": { \"jsx\": false } }`, only the field `jsx` will be overwritten, keeping all remaining fields intact, even the `impliedStrict` field within `ecmaFeatures`.**\n\n## Backend Example Using Node.js, MongoDB and Mocha\n\n```json\n{\n    \"env\": {\n        \"es2021\": true,\n        \"mocha\": true,\n        \"mongo\": true,\n        \"node\": true\n    },\n    \"extends\": [\n        \"chema22r\",\n        \"chema22r/mocha\",\n        \"chema22r/mongo\",\n        \"chema22r/node\"\n    ],\n    \"parserOptions\": {\n        \"ecmaFeatures\": {\n            \"impliedStrict\": true\n        },\n        \"ecmaVersion\": 2021,\n        \"sourceType\": \"module\"\n    },\n    \"rules\": {}\n}\n```\n\n\u003e In this example, the `env` and `parserOptions` fields are completely optional since they were already imported through the extensions used. Setting a different configuration here will merge and overwrite the imported one from the extensions. **Important example: the imported `env` looks exactly as in the example, so if we set a different one locally as `\"env\": { \"es2019\": true }`, no field will be overwritten, keeping all remaining fields intact, even the `es2021` field.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchema22r%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchema22r%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchema22r%2Feslint-config/lists"}