{"id":15416765,"url":"https://github.com/jsimck/eslint-config","last_synced_at":"2026-02-22T21:11:59.656Z","repository":{"id":118555362,"uuid":"606826073","full_name":"jsimck/eslint-config","owner":"jsimck","description":"Very opinionated eslint config I use on my projects, includes: prettier, TS, jest, sonarqube and plugin-unicorn","archived":false,"fork":false,"pushed_at":"2026-02-11T21:46:12.000Z","size":173,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-12T05:06:16.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/jsimck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-26T17:21:46.000Z","updated_at":"2026-02-11T08:40:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"8b3ea84e-f643-4e87-ac02-8402ed56eef0","html_url":"https://github.com/jsimck/eslint-config","commit_stats":null,"previous_names":["jsimck/eslint-config"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/jsimck/eslint-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsimck%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsimck%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsimck%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsimck%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jsimck","download_url":"https://codeload.github.com/jsimck/eslint-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jsimck%2Feslint-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29723645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-10-01T17:13:48.337Z","updated_at":"2026-02-22T21:11:59.651Z","avatar_url":"https://github.com/jsimck.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @jsimck/eslint-config\n\nOpinionated shareable ESLint flat config for JavaScript/TypeScript projects, including React, import ordering, SonarJS, Unicorn, and Prettier.\n\n## Install\n\n```bash\npnpm add -D eslint@9 @jsimck/eslint-config\n```\n\n## Usage\n\nCreate `eslint.config.js` (or `eslint.config.mjs`) in your project root:\n\n```js\nimport baseConfig from '@jsimck/eslint-config';\n\nexport default [...baseConfig];\n```\n\n## Lint Scripts\n\n```json\n{\n  \"scripts\": {\n    \"lint\": \"eslint .\",\n    \"lint:fix\": \"pnpm lint --fix\"\n  }\n}\n```\n\n## Available Configs\n\nDefault export already includes several presets. You can also import individual configs from `@jsimck/eslint-config/configs`.\n\n| Config Name             | Description                                                       | Included In Default |\n| ----------------------- | ----------------------------------------------------------------- | ------------------- |\n| `base`                  | Global ignores, browser/node globals, parser options              | ✅                  |\n| `stylistic`             | `@stylistic/eslint-plugin` spacing and line rules                 | ✅                  |\n| `javascript`            | `@eslint/js` recommended + custom JS rules                        | ✅                  |\n| `typescript`            | TypeScript parser and non-typechecked TS rules                    | ✅                  |\n| `react`                 | `eslint-plugin-react`, `react-hooks`, `react-refresh`, `jsx-a11y` | ✅                  |\n| `imprt`                 | `eslint-plugin-import-x` rules and resolver setup                 | ✅                  |\n| `sonarjs`               | `eslint-plugin-sonarjs` recommended + overrides                   | ✅                  |\n| `unicorn`               | `eslint-plugin-unicorn` recommended + overrides                   | ✅                  |\n| `unusedImports`         | `eslint-plugin-unused-imports`                                    | ✅                  |\n| `prettier`              | `eslint-plugin-prettier/recommended` + local prettier options     | ✅                  |\n| `vitest`                | `@vitest/eslint-plugin` rules for tests                           | ❌                  |\n| `typescriptTypeChecked` | Type-aware TypeScript rules (requires project service)            | ❌                  |\n| `sortClassMembers`      | `eslint-plugin-sort-class-members`                                | ❌                  |\n\nExample with optional configs:\n\n```js\nimport baseConfig from '@jsimck/eslint-config';\nimport {\n  vitest,\n  typescriptTypeChecked,\n  sortClassMembers,\n} from '@jsimck/eslint-config/configs';\n\nexport default [\n  ...baseConfig,\n  ...typescriptTypeChecked,\n  ...sortClassMembers,\n  ...vitest,\n];\n```\n\n## Advanced Usage\n\nAll configs are individually importable from `@jsimck/eslint-config/configs`, so you can compose only what you need:\n\n```js\nimport {\n  base,\n  stylistic,\n  typescript,\n  react,\n  imprt,\n  unusedImports,\n} from '@jsimck/eslint-config/configs';\n\nexport default [\n  ...base,\n  ...stylistic,\n  ...typescript,\n  ...react,\n  ...imprt,\n  ...unusedImports,\n];\n```\n\n\u003e **Note:** The `base` config provides global ignores (node_modules, dist, build, etc.) and browser/node globals. It's recommended as a foundation for any custom composition.\n\n### Overriding Rules\n\nYou can override any rule by appending your own config object after the presets:\n\n```js\nimport baseConfig from '@jsimck/eslint-config';\n\nexport default [\n  ...baseConfig,\n  {\n    rules: {\n      'prettier/prettier': ['error', { singleQuote: false, semi: false }],\n      '@typescript-eslint/no-explicit-any': 'off',\n    },\n  },\n];\n```\n\n### Adding Prettier Plugins\n\nThe `prettierOptions` object is exported separately, so you can extend it with plugins like Tailwind CSS class sorting:\n\n```js\nimport { createRequire } from 'node:module';\nimport baseConfig from '@jsimck/eslint-config';\nimport { prettierOptions } from '@jsimck/eslint-config/configs';\n\nconst require = createRequire(import.meta.url);\n\nexport default [\n  ...baseConfig,\n  {\n    rules: {\n      'prettier/prettier': [\n        'error',\n        {\n          ...prettierOptions,\n          plugins: [\n            require.resolve('prettier-plugin-tailwindcss'),\n          ],\n        },\n      ],\n    },\n  },\n];\n```\n\n### Replacing a Config\n\nTo use the defaults but swap out a specific config (e.g. use your own prettier setup), import configs individually and omit what you don't need:\n\n```js\nimport {\n  base,\n  stylistic,\n  javascript,\n  typescript,\n  react,\n  imprt,\n  sonarjs,\n  unicorn,\n  unusedImports,\n} from '@jsimck/eslint-config/configs';\n\nexport default [\n  ...base,\n  ...stylistic,\n  ...javascript,\n  ...typescript,\n  ...react,\n  ...imprt,\n  ...sonarjs,\n  ...unicorn,\n  ...unusedImports,\n  // your own prettier or formatting config here\n];\n```\n\n## Contributing\n\nInclude a [changeset](https://github.com/changesets/changesets) with user-facing changes:\n\n```bash\npnpm changeset\n```\n\n## Release\n\n```bash\npnpm release\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsimck%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjsimck%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjsimck%2Feslint-config/lists"}