{"id":22878067,"url":"https://github.com/ericc-ch/eslint-config","last_synced_at":"2026-03-05T20:47:21.411Z","repository":{"id":264888186,"uuid":"894569801","full_name":"ericc-ch/eslint-config","owner":"ericc-ch","description":"My own, opinionated, ESLint config.","archived":false,"fork":false,"pushed_at":"2025-04-07T10:36:53.000Z","size":450,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-04T18:18:37.975Z","etag":null,"topics":["eslint-config"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@echristian/eslint-config","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/ericc-ch.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-11-26T15:32:16.000Z","updated_at":"2025-04-07T10:36:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"d5fd93d2-a1f9-4d15-bf25-75e302eb1973","html_url":"https://github.com/ericc-ch/eslint-config","commit_stats":null,"previous_names":["ericc-ch/eslint-config"],"tags_count":41,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Feslint-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Feslint-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Feslint-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericc-ch%2Feslint-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericc-ch","download_url":"https://codeload.github.com/ericc-ch/eslint-config/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252957785,"owners_count":21831551,"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":["eslint-config"],"created_at":"2024-12-13T16:17:51.181Z","updated_at":"2026-03-05T20:47:21.401Z","avatar_url":"https://github.com/ericc-ch.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @echristian/eslint-config\n\nA modern and opinionated ESLint configuration with TypeScript, JSX, CSS, and Markdown support.\n\n## Installation\n\nUsing npm:\n\n```bash\nnpm install -D @echristian/eslint-config eslint\n```\n\nUsing yarn:\n\n```bash\nyarn add -D @echristian/eslint-config eslint\n```\n\nUsing pnpm:\n\n```bash\npnpm add -D @echristian/eslint-config eslint\n```\n\n## Usage\n\nCreate an `eslint.config.js` file in your project root:\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  // Configuration options here\n});\n```\n\n## Configuration Options\n\nThe configuration function accepts an options object with the following structure:\n\n```typescript\ninterface ESLintConfigOptions {\n  // Glob patterns to ignore\n  ignores?: Array\u003cstring\u003e;\n\n  // TypeScript configuration\n  typescript?: {\n    options?: {\n      typeChecked?: boolean; // defaults to true\n    };\n  };\n\n  // React configuration\n  react?: {\n    enabled?: boolean; // defaults to false\n    options?: {\n      typeChecked?: boolean; // defaults to true\n    };\n  };\n\n  // React Hooks configuration\n  reactHooks?: {\n    enabled: boolean; // defaults to false\n  };\n\n  // JSX configuration\n  jsx?: {\n    enabled?: boolean; // defaults to false\n    a11y?: boolean; // defaults to true\n  };\n\n  // Markdown configuration\n  markdown?: {\n    enabled?: boolean; // defaults to false\n    options?: {\n      language?: \"commonmark\" | \"gfm\"; // defaults to \"gfm\"\n      frontMatter?: \"yaml\" | \"toml\" | \"json\" | false; // defaults to false\n    };\n  };\n\n  // Prettier configuration\n  prettier?: {\n    experimentalOperatorPosition?: \"start\" | \"end\";\n    experimentalTernaries?: boolean;\n    semi?: boolean;\n    // More prettier config\n  };\n\n  // Package.json rules configuration\n  packageJson?: {\n    package?: boolean; // defaults to false\n  };\n}\n```\n\n## Example Configurations\n\n### Basic TypeScript Project\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  ignores: [\"dist/\"],\n});\n```\n\n### TypeScript Project without Type Checking\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  typescript: {\n    options: {\n      typeChecked: false,\n    },\n  },\n});\n```\n\n### React Project with Hooks\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  react: {\n    enabled: true,\n  },\n  reactHooks: {\n    enabled: true,\n  },\n  jsx: {\n    enabled: true,\n  },\n});\n```\n\n### Full-Stack Project with CSS\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  ignores: [\"dist/\", \"build/\"],\n  react: {\n    enabled: true,\n  },\n  reactHooks: {\n    enabled: true,\n  },\n  jsx: {\n    enabled: true,\n  },\n  css: {\n    enabled: true,\n  },\n});\n```\n\n### Documentation Project with Markdown\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  markdown: {\n    enabled: true,\n    options: {\n      language: \"gfm\", // GitHub Flavored Markdown\n      frontMatter: \"yaml\", // Enable YAML frontmatter support\n    },\n  },\n});\n```\n\n### Complete Project with All Features\n\n```javascript\nimport eslintConfig from \"@echristian/eslint-config\";\n\nexport default eslintConfig({\n  ignores: [\"dist/\", \"build/\"],\n  react: {\n    enabled: true,\n  },\n  reactHooks: {\n    enabled: true,\n  },\n  jsx: {\n    enabled: true,\n  },\n  markdown: {\n    enabled: true,\n    options: {\n      language: \"gfm\",\n      frontMatter: \"yaml\",\n    },\n  },\n});\n```\n\n## Dependencies\n\nThis config includes the following major dependencies:\n\n- `@eslint/js`: Core ESLint rules\n- `@eslint/json`: JSON support\n- `@eslint/css`: CSS support\n- `@eslint/markdown`: Markdown support\n- `typescript-eslint`: TypeScript support\n- `@stylistic/eslint-plugin`: Style-related rules\n- `eslint-plugin-unused-imports`: Unused imports management\n- `eslint-plugin-perfectionist`: Additional best practices\n- `eslint-plugin-prettier`: Prettier integration\n- `eslint-plugin-regexp`: Regular expression linting\n- `eslint-plugin-de-morgan`: Logical expression optimization\n- `eslint-plugin-package-json`: Package.json validation\n- `eslint-plugin-react-hooks`: React Hooks linting rules\n- `@eslint-react/eslint-plugin`: React component linting\n\n## License\n\nMIT - See [LICENSE](./LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericc-ch%2Feslint-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericc-ch%2Feslint-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericc-ch%2Feslint-config/lists"}