{"_id":"@dbarrett24/eslint-config","name":"@dbarrett24/eslint-config","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dbarrett24/eslint-config","version":"1.0.0","description":"Shared ESLint configuration for React/Next.js applications","main":"index.js","keywords":["eslint","eslintconfig","react","nextjs","typescript"],"author":{"name":"Your Name"},"license":"MIT","dependencies":{"@typescript-eslint/eslint-plugin":"^8.44.1","@typescript-eslint/parser":"^8.44.1","eslint-config-prettier":"^9.0.0","eslint-plugin-import":"npm:eslint-plugin-i@^2.27.5-1","eslint-plugin-jest":"^27.2.3","eslint-plugin-jest-dom":"^5.1.0","eslint-plugin-jsx-a11y":"^6.10.2","eslint-plugin-prettier":"^5.5.4","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-testing-library":"^5.11.0"},"peerDependencies":{"eslint":"^8.0.0","prettier":">=3","typescript":">=5"},"publishConfig":{"access":"public"},"_id":"@dbarrett24/eslint-config@1.0.0","_integrity":"sha512-9lRwhVorJzaX0OvPapCU5MwkMAXxp2yF+kIslVr8zmmm6aeEPxDiT5e+6nTkfdwsmEJRSa/6XqLi2Fau66arSg==","_resolved":"/private/var/folders/q_/z4dwy_td5ts0fdx2klqhf_900000gn/T/cdfc52898c9771aa38b31689a043ae38/dbarrett24-eslint-config-1.0.0.tgz","_from":"file:dbarrett24-eslint-config-1.0.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-9lRwhVorJzaX0OvPapCU5MwkMAXxp2yF+kIslVr8zmmm6aeEPxDiT5e+6nTkfdwsmEJRSa/6XqLi2Fau66arSg==","shasum":"0861c0505cf747c79c38ef8011fcf29c121caea9","tarball":"https://registry.npmjs.org/@dbarrett24/eslint-config/-/eslint-config-1.0.0.tgz","fileCount":3,"unpackedSize":7180,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCSoBEIQ0YQTqocza9hKU6eE6euBlLQdMkTVLksOQzI+AIhAOfI/KoLjV1+4N4CnZ/GArUFtYwfZZNdJyk4Dejocdb4"}]},"_npmUser":{"name":"dbarrett24","email":"dev.davebarrett@gmail.com"},"directories":{},"maintainers":[{"name":"dbarrett24","email":"dev.davebarrett@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-config_1.0.0_1769474807549_0.9187371585615176"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-27T00:46:47.421Z","1.0.0":"2026-01-27T00:46:47.713Z","modified":"2026-01-27T00:46:47.971Z"},"maintainers":[{"name":"dbarrett24","email":"dev.davebarrett@gmail.com"}],"description":"Shared ESLint configuration for React/Next.js applications","keywords":["eslint","eslintconfig","react","nextjs","typescript"],"author":{"name":"Your Name"},"license":"MIT","readme":"# @yourname/eslint-config\n\nShared ESLint configuration for React/Next.js applications with TypeScript support.\n\n## Installation\n\n```bash\npnpm add -D @yourname/eslint-config eslint prettier typescript\n```\n\n## Usage\n\nCreate `.eslintrc.js` in your project root:\n\n```javascript\nmodule.exports = {\n    extends: ['@yourname/eslint-config'],\n    root: true,\n};\n```\n\n### For Next.js Apps\n\nAdd Next.js specific rules:\n\n```javascript\nmodule.exports = {\n    extends: ['@yourname/eslint-config'],\n    plugins: ['@next/eslint-plugin-next'],\n    rules: {\n        // Add Next.js specific import restrictions\n        'no-restricted-imports': [\n            'error',\n            {\n                paths: ['next/navigation', 'next/router', 'next/link'],\n            },\n        ],\n    },\n    root: true,\n};\n```\n\n### With TypeScript Project References\n\nIf using TypeScript project references, add:\n\n```javascript\nmodule.exports = {\n    extends: ['@yourname/eslint-config'],\n    parserOptions: {\n        project: './tsconfig.json',\n    },\n    root: true,\n};\n```\n\n## What's Included\n\n### Plugins\n\n- **@typescript-eslint** - TypeScript support\n- **react** - React best practices\n- **react-hooks** - React Hooks rules\n- **jsx-a11y** - Accessibility rules\n- **jest** - Jest testing rules\n- **jest-dom** - jest-dom best practices\n- **testing-library** - React Testing Library rules\n- **prettier** - Prettier integration\n- **import** - Import/export validation\n\n### Key Rules\n\n#### TypeScript\n- Unused variables warning (except prefixed with `_`)\n- `any` type warning (not error for flexibility)\n- No module boundary types required\n\n#### React\n- No React import needed (new JSX transform)\n- No prop-types (using TypeScript)\n- Display name warning for debugging\n\n#### Testing\n- No jest.clearAllMocks() (automated in jest.config)\n- Enforce Testing Library best practices\n- No direct node access in tests\n\n#### Imports\n- Alphabetical ordering\n- No duplicate imports\n- Grouped by type (builtin, external, internal)\n\n#### Code Quality\n- Prefer const over let\n- No var declarations\n- Console warning (except warn/error)\n\n## Scripts\n\nAdd to your `package.json`:\n\n```json\n{\n  \"scripts\": {\n    \"lint-ts\": \"eslint src --cache\",\n    \"lint-ts-fix\": \"eslint src --cache --fix\"\n  }\n}\n```\n\n## Customization\n\nOverride rules in your `.eslintrc.js`:\n\n```javascript\nmodule.exports = {\n    extends: ['@yourname/eslint-config'],\n    rules: {\n        // Make specific rules stricter or more lenient\n        '@typescript-eslint/no-explicit-any': 'error',\n        'no-console': 'off',\n    },\n    root: true,\n};\n```\n\n## Integration with Prettier\n\nThis config includes `eslint-config-prettier` to disable conflicting rules. Make sure to use `@yourname/prettier-config` for consistent formatting.\n\n## VS Code Integration\n\nInstall the ESLint extension and add to `.vscode/settings.json`:\n\n```json\n{\n  \"editor.codeActionsOnSave\": {\n    \"source.fixAll.eslint\": true\n  },\n  \"eslint.validate\": [\"javascript\", \"javascriptreact\", \"typescript\", \"typescriptreact\"]\n}\n```\n\n## License\n\nMIT\n\n","readmeFilename":"README.md","_rev":"1-775999896b5de1be9dee49ad13da75c5"}