-
Notifications
You must be signed in to change notification settings - Fork 3
feat: migrate ESLint to flat config #201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: migrate ESLint to flat config #201
Conversation
Includes backend ESLint migration from PR #199 to fix broken renovate/major-linters branch.
- Create eslint-base.config.mjs with shared rules and ignore patterns - Update backend/eslint.config.mjs to import from shared base - Update frontend/package.json: remove legacy configs (eslint-config-love, import resolvers, promise, import plugins) - Add ESLint 9 flat config dependencies (@eslint/eslintrc, @eslint/js, globals) - Update ESLint and TypeScript ESLint to match root versions (9.16.0, 8.16.0) - Create frontend/eslint.config.mjs with React support and import from base - Preserve all existing React rules from .eslintrc.yml - Remove frontend/.eslintrc.yml and frontend/.eslintignore - Split lint scripts: lint (check-only) and lint:fix (auto-fix) - Update package-lock.json files Part of multi-PR ESLint migration plan.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR migrates the project's ESLint configuration from the legacy .eslintrc format to the modern flat config format (eslint.config.mjs), along with updating ESLint and related dependencies to their latest versions.
- Migrates from ESLint v8/legacy config to ESLint v9 with flat config format
- Updates TypeScript ESLint packages from v7 to v8
- Consolidates common ESLint configuration into a shared base config file
- Updates related ESLint plugins and removes deprecated dependencies
Reviewed Changes
Copilot reviewed 7 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| package-lock.json | Updates eslint-config-prettier from ^9.1.0 to ^10.0.0 in root package |
| frontend/package.json | Updates ESLint dependencies to v9, TypeScript ESLint to v8, and adds new linting scripts |
| frontend/package-lock.json | Reflects dependency updates including ESLint v9, removes obsolete packages like eslint-config-love |
| frontend/eslint.config.mjs | New flat config format for frontend with React-specific rules |
| frontend/.eslintrc.yml | Removed legacy YAML configuration file |
| frontend/.eslintignore | Removed legacy ignore file (now handled in flat config) |
| eslint-base.config.mjs | New shared base ESLint configuration for both frontend and backend |
| backend/package.json | Updates ESLint dependencies, removes lint-staged and unused plugins |
| backend/eslint.config.mjs | New flat config format for backend with Node-specific settings |
Files not reviewed (1)
- frontend/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 7 out of 10 changed files in this pull request and generated no new comments.
Files not reviewed (1)
- frontend/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Summary
Migrates both backend and frontend from legacy ESLint configurations to ESLint 9.x flat config format with a shared base configuration. This fixes the broken
renovate/major-lintersbranch and enables it to be merged.Changes
eslint-base.config.mjsat root with shared rules and ignore patternseslint-config-airbnb-base,eslint-config-standard, etc.backend/eslint.config.mjsimporting from shared baseeslint-config-love, import resolvers, etc.frontend/eslint.config.mjswith React supportfrontend/.eslintrc.ymlandfrontend/.eslintignorelint(check-only) andlint:fix(auto-fix) in both backend and frontendBenefits
renovate/major-lintersbranch (can now merge to main)Testing
npm cicompletes successfully in both backend and frontendnpm run lintworks in both directoriesRelated
Combines PR #199 (backend) and PR #200 (frontend) into a single PR targeting main directly.