{"id":15040704,"url":"https://github.com/areknawo/eslint-config-xtrict","last_synced_at":"2025-04-14T18:34:05.936Z","repository":{"id":42909944,"uuid":"228905657","full_name":"areknawo/eslint-config-xtrict","owner":"areknawo","description":"Extremely strict ESLint config for demanding projects  🔥","archived":false,"fork":false,"pushed_at":"2023-01-07T20:26:17.000Z","size":282,"stargazers_count":6,"open_issues_count":6,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T07:03:32.195Z","etag":null,"topics":["codestyle","config","eslint","eslint-config","eslint-shareable-configs","javascript","linting","nodejs","webdevelopment"],"latest_commit_sha":null,"homepage":"","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/areknawo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-12-18T19:13:42.000Z","updated_at":"2022-05-13T13:21:12.000Z","dependencies_parsed_at":"2023-02-08T00:46:42.247Z","dependency_job_id":null,"html_url":"https://github.com/areknawo/eslint-config-xtrict","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areknawo%2Feslint-config-xtrict","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areknawo%2Feslint-config-xtrict/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areknawo%2Feslint-config-xtrict/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/areknawo%2Feslint-config-xtrict/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/areknawo","download_url":"https://codeload.github.com/areknawo/eslint-config-xtrict/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248937209,"owners_count":21186185,"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","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":["codestyle","config","eslint","eslint-config","eslint-shareable-configs","javascript","linting","nodejs","webdevelopment"],"created_at":"2024-09-24T20:44:56.793Z","updated_at":"2025-04-14T18:34:05.910Z","avatar_url":"https://github.com/areknawo.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eslint-config-xtrict\n\n[![](https://img.shields.io/twitter/follow/areknawo?label=Follow\u0026style=for-the-badge)](https://twitter.com/areknawo) [![](https://img.shields.io/twitter/url?style=for-the-badge\u0026url=https%3A%2F%2Fgithub.com%2Fareknawo%2Feslint-config-xtrict)](https://twitter.com/intent/tweet?url=https%3A%2F%2Fgithub.com%2Fareknawo%2Feslint-config-xtrict\u0026via=areknawo\u0026text=Check%20out%20this%20ESLInt%20Config%21)\n\nExtremely strict ESLint config for demanding projects 🔥\n\n## Reasons\n\nESLint is a great linter. It's reliable, high-performance, but also very _configurable_. And that's why some of its users might struggle a little bit. Which configuration is best for my project? How strict my config should be? Are there any rules that I could guide me?\n\nBecause I've stumbled upon these questions myself a while ago, I decided to somehow answer them on my own. I didn't know how strict my config should be and how should it look like. I searched through the NPM to find some reference point, but with no success.\n\nThat's why (and for some other reasons you can read about in [my blog post](https://areknawo.com/creating-the-perfect-eslint-config/)), I went on a quest to go through the whole list of official ESLint rules and the most popular plugins to create _my own ESLint config_ from scratch. This config is the result of my work, and I hope you'll enjoy it!\n\n## Installation\n\nThis config is available on NPM, so the installation process is really straight-forward.\n\n```bash\nnpm install --save-dev eslint-config-xtrict\n```\n\nOr if you're using [Yarn](https://yarnpkg.com)\n\n```bash\nyarn add --dev eslint-config-xtrict\n```\n\n## Usage\n\nThe config is very much tailored towards the use of TypeScript (as its recommended for anyone wanting this level of strictness). The most basic use-case is just `tsconfig.json` and ESLint config file (example for `.eslintrc.js`).\n\n```json\n{\n\t\"extends\": \"./node_modules/eslint-config-xtrict/tsconfig.json\"\n}\n```\n\n```javascript\nmodule.exports = {\n\textends: [\"xtrict\"],\n\tparserOptions: {\n\t\ttsconfigRootDir: __dirname\n\t}\n};\n```\n\nThe config is designed to work with ESLint v7, but if you're using v6, it's important to include the special patching script at top of your config file, which allows ESLint v6 to properly resolve plugins used by the config (see [this issue for more details](https://github.com/eslint/eslint/issues/3458#issuecomment-516716165)).\n\n```javascript\nrequire(\"eslint-config-xtrict/patch-eslint6\");\n\nmodule.exports = {\n\t// ...\n};\n```\n\nApart from that if you're using TypeScript, you'll also have to supply `tsconfigRootDir` option, equal to global variable `__dirname`.\n\nIf you use Prettier (also recommended), there's a reference config included, if you want.\n\nIf you don't use TypeScript or want to ease the rules, you can extend only upon certain groups of rules. For this, you need to access the `/config` folder and all the sub-configs within in.\n\n```javascript\nmodule.exports = {\n\textends: [\"xtrict/configs/style\"]\n\t// ...\n};\n```\n\nThere are as many as 8 different sub-configs, so feel free to use them however you want!\n\n## Additional info\n\nSo, again, as the config is really strict, you'll most likely end up disabling some of the rules, to better suit your needs. It's meant to serve as a better foundation for your edits, rather than `eslint:all`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fareknawo%2Feslint-config-xtrict","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fareknawo%2Feslint-config-xtrict","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fareknawo%2Feslint-config-xtrict/lists"}