{"id":22344066,"url":"https://github.com/dethdkn/eslint-config","last_synced_at":"2025-07-30T03:30:44.008Z","repository":{"id":241962144,"uuid":"804685701","full_name":"dethdkn/eslint-config","owner":"dethdkn","description":"🧹 My Opinionated ESLint Config","archived":false,"fork":false,"pushed_at":"2025-07-23T23:42:42.000Z","size":1059,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-28T16:57:27.113Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://eslint.rosa.dev.br","language":"TypeScript","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/dethdkn.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-23T04:23:07.000Z","updated_at":"2025-07-23T23:42:44.000Z","dependencies_parsed_at":"2024-05-30T23:16:35.165Z","dependency_job_id":"42a2efa9-a6fb-44cd-8b90-078c84831ffb","html_url":"https://github.com/dethdkn/eslint-config","commit_stats":null,"previous_names":["dethdkn/eslint-config"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/dethdkn/eslint-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dethdkn%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dethdkn%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dethdkn%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dethdkn%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dethdkn","download_url":"https://codeload.github.com/dethdkn/eslint-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dethdkn%2Feslint-config/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267803962,"owners_count":24146526,"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-07-30T02:00:09.044Z","response_time":70,"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":[],"created_at":"2024-12-04T09:07:55.872Z","updated_at":"2025-07-30T03:30:43.987Z","avatar_url":"https://github.com/dethdkn.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e@dethdkn/eslint-config\u003c/h1\u003e\n\u003cp align=\"center\"\u003e🧹 My Opinionated ESLint Config\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://rosa.dev.br\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/check me!-👻-F28AA9\" alt=\"rosa.dev.br\"/\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://github.com/dethdkn/eslint-config/blob/main/LICENSE\"\u003e\n      \u003cimg src=\"https://img.shields.io/github/license/dethdkn/eslint-config?color=%233da639\u0026logo=open%20source%20initiative\" alt=\"License\"/\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/antfu/eslint-config\"\u003e\n      \u003cimg src=\"https://antfu.me/badge-code-style.svg\" alt=\"Antfu\"/\u003e\n   \u003c/a\u003e\n   \u003ca href=\"https://gitmoji.dev\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/gitmoji-%20😜%20😍-FFDD67\" alt=\"Gitmoji\"/\u003e\n   \u003c/a\u003e\n\u003c/p\u003e\n\n## 📦 About This Package\nThis is my opinionated `eslint-config`, heavily inspired by \u003ca href=\"https://github.com/antfu/eslint-config\"\u003eAntfu's config\u003c/a\u003e. This setup is a combination of the following rules:\n\n- \u003ca href=\"https://html-eslint.org\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://html-eslint.org/logo_32x32.716351c9.png\" alt=\"HTML\" width=\"12\"\u003e\n        HTML (hbs)\n  \u003c/a\u003e\n- \u003ca href=\"https://eslint.org/docs/latest/rules\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/javascript/javascript-original.svg\" alt=\"Javascript\" width=\"12\"\u003e\n        Javascript\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/eslint-community/eslint-plugin-n\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://nodejs.org/static/images/favicons/favicon.png\" alt=\"Node\" width=\"12\"\u003e\n        Node\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/un-ts/eslint-plugin-import-x\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Import X\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/sweepline/eslint-plugin-unused-imports\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Unused Imports\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/eslint-community/eslint-plugin-promise\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Promise\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/eslint-community/eslint-plugin-security\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Security\n  \u003c/a\u003e\n- \u003ca href=\"https://mysticatea.github.io/eslint-plugin-eslint-comments\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Eslint Comments\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/gajus/eslint-plugin-jsdoc\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        JSDoc\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/antfu/eslint-plugin-antfu\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://antfu.me/favicon.svg\" alt=\"Antfu\" width=\"12\"\u003e\n        Antfu\n  \u003c/a\u003e\n- \u003ca href=\"https://orm.drizzle.team/docs/eslint-plugin\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://orm.drizzle.team/favicon.ico\" alt=\"Drizzle\" width=\"12\"\u003e\n        Drizzle\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/gajus/eslint-plugin-zod\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://zod.dev/static/favicon.ico\" alt=\"Drizzle\" width=\"12\"\u003e\n        Zod\n  \u003c/a\u003e\n- \u003ca href=\"https://typescript-eslint.io/rules\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://www.typescriptlang.org/favicon-32x32.png\" alt=\"Typescript\" width=\"12\"\u003e\n        Typescript\n  \u003c/a\u003e\n- \u003ca href=\"https://eslint.style\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.style/logo.svg\" alt=\"Stylistic\" width=\"12\"\u003e\n        Stylistic\n  \u003c/a\u003e\n- \u003ca href=\"https://ota-meshi.github.io/eslint-plugin-css/\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon@latest/icons/css3/css3-original.svg\" alt=\"TailwindCSS\" width=\"12\"\u003e\n        CSS\n  \u003c/a\u003e\n- \u003ca href=\"https://ota-meshi.github.io/eslint-plugin-regexp\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Regexp\n  \u003c/a\u003e\n- \u003ca href=\"https://eslint-plugin-perfectionist.azat.io\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint-plugin-perfectionist.azat.io/favicon.ico\" alt=\"Perfectionist\" width=\"12\"\u003e\n        Perfectionist\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/sindresorhus/eslint-plugin-unicorn\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://eslint.org/favicon.ico\" alt=\"Eslint\" width=\"12\"\u003e\n        Unicorn\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/veritem/eslint-plugin-vitest\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://vitest.dev/favicon.ico\" alt=\"Vitest\" width=\"12\"\u003e\n        Vitest\n  \u003c/a\u003e\n- \u003ca href=\"https://ota-meshi.github.io/eslint-plugin-jsonc\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://www.json.org/favicon.png\" alt=\"Json\" width=\"12\"\u003e\n        Json\n  \u003c/a\u003e\n- \u003ca href=\"https://ota-meshi.github.io/eslint-plugin-yml\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://yaml.org/favicon.svg\" alt=\"Yaml\" width=\"12\"\u003e\n        Yaml\n  \u003c/a\u003e\n- \u003ca href=\"https://ota-meshi.github.io/eslint-plugin-toml\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://toml.io/favicon.png\" alt=\"Toml\" width=\"12\"\u003e\n        Toml\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/francoismassart/eslint-plugin-tailwindcss\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://tailwindcss.com/favicons/favicon-16x16.png\" alt=\"TailwindCSS\" width=\"12\"\u003e\n        TailwindCSS\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://eslint.vuejs.org\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://vuejs.org/logo.svg\" alt=\"Vue\" width=\"12\"\u003e\n        Vue\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://vue-a11y.github.io/eslint-plugin-vuejs-accessibility\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://vuejs.org/logo.svg\" alt=\"Eslint\" width=\"12\"\u003e\n        vue-a11y\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://eslint-plugin-vue-i18n.intlify.dev/\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://vuejs.org/logo.svg\" alt=\"Eslint\" width=\"12\"\u003e\n        vue-i18n\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://eslint.nuxt.com/packages/plugin\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://nuxt.com/icon.png\" alt=\"Nuxt\" width=\"12\"\u003e\n        Nuxt\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/Rel1cx/eslint-react\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://react.dev/favicon.ico\" alt=\"Nuxt\" width=\"12\"\u003e\n        React\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://github.com/edvardchen/eslint-plugin-i18next\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://react.dev/favicon.ico\" alt=\"Nuxt\" width=\"12\"\u003e\n        React-i18n\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- \u003ca href=\"https://nextjs.org/docs/app/api-reference/config/eslint\" target=\"_blank\"\u003e\n     \u003cimg src=\"https://nextjs.org/favicon.ico\" alt=\"Nuxt\" width=\"12\"\u003e\n        Next\u003cspan style=\"color:red;\"\u003e*\u003c/span\u003e\n  \u003c/a\u003e\n- And more...\n\u003cp align=\"center\" style=\"color:red;\"\u003e*Not enabled by default\u003c/p\u003e\n\u003ch3 align=\"center\"\u003e\n  \u003ca href=\"https://eslint.rosa.dev.br\"\u003eClick here to check all rules\u003c/a\u003e\n\u003c/h3\u003e\n\n## 🚀 Setup\n\n1. Install with your favorite package manager:\n   - **pnpm** : `pnpm add -D eslint @dethdkn/eslint-config`\n   - npm : `npm i -D eslint @dethdkn/eslint-config`\n   - yarn : `yarn add -D eslint @dethdkn/eslint-config`\n   - bun : `bun add -D eslint @dethdkn/eslint-config`\n\n2. Create a `eslint.config.mjs` in the project root:\n```js\n// eslint.config.mjs\nimport dethdkn from '@dethdkn/eslint-config'\n\nexport default dethdkn()\n```\n\n3. Add lint scripts to `package.json`:\n```json\n{\n  \"scripts\": {\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"eslint . --fix\"\n  }\n}\n```\n\n4. Add the following configuration to `.vscode/settings.json`:\n```json\n{\n  // Disable the default formatter, use eslint instead\n  \"prettier.enable\": false,\n  \"editor.formatOnSave\": false,\n\n  // Auto fix\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": \"explicit\",\n    \"source.organizeImports\": \"never\"\n  },\n\n  // Silent the stylistic rules in you IDE, but still auto fix them\n  \"eslint.rules.customizations\": [\n    { \"rule\": \"style/*\", \"severity\": \"off\" },\n    { \"rule\": \"format/*\", \"severity\": \"off\" },\n    { \"rule\": \"*-indent\", \"severity\": \"off\" },\n    { \"rule\": \"*-spacing\", \"severity\": \"off\" },\n    { \"rule\": \"*-spaces\", \"severity\": \"off\" },\n    { \"rule\": \"*-order\", \"severity\": \"off\" },\n    { \"rule\": \"*-dangle\", \"severity\": \"off\" },\n    { \"rule\": \"*-newline\", \"severity\": \"off\" },\n    { \"rule\": \"*quotes\", \"severity\": \"off\" },\n    { \"rule\": \"*semi\", \"severity\": \"off\" }\n  ],\n\n  // Enable eslint for all supported languages\n  \"eslint.validate\": [\n    \"javascript\",\n    \"javascriptreact\",\n    \"typescript\",\n    \"typescriptreact\",\n    \"vue\",\n    \"html\",\n    \"handlebars\",\n    \"markdown\",\n    \"json\",\n    \"jsonc\",\n    \"yaml\",\n    \"toml\",\n    \"xml\",\n    \"gql\",\n    \"graphql\",\n    \"css\",\n    \"less\",\n    \"scss\",\n    \"pcss\",\n    \"postcss\"\n  ]\n}\n```\n\n## ⚙️ Options\n\n- `tailwind`, `vue`, `nuxt`, `vueI18n`, `react`, `next`, `reactI18n`, `autoImports` rules can be enabled:\n```js\n// eslint.config.mjs\nimport dethdkn from '@dethdkn/eslint-config'\n\nexport default dethdkn({ tailwind: true, vue: true, nuxt: true, vueI18n: true, react: true, next: true, reactI18n: true, autoImports: true })\n```\n\n## 📝 License\n\nCopyright © 2024 [Gabriel 'DethDKN' Rosa](https://github.com/dethdkn)\\\nThis project is under [MIT license](https://github.com/dethdkn/eslint-config/blob/main/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdethdkn%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdethdkn%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdethdkn%2Feslint-config/lists"}