Skip to content

Conversation

@DerekRoberts
Copy link
Member

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-linters branch and enables it to be merged.

Changes

  • Created eslint-base.config.mjs at root with shared rules and ignore patterns
  • Backend migration (includes PR feat: migrate backend ESLint to flat config format #199 changes):
    • Removed incompatible packages: eslint-config-airbnb-base, eslint-config-standard, etc.
    • Added ESLint 9 flat config dependencies
    • Created backend/eslint.config.mjs importing from shared base
  • Frontend migration:
    • Removed legacy configs: eslint-config-love, import resolvers, etc.
    • Created frontend/eslint.config.mjs with React support
    • Preserved all existing React rules
    • Removed frontend/.eslintrc.yml and frontend/.eslintignore
  • Split scripts: lint (check-only) and lint:fix (auto-fix) in both backend and frontend

Benefits

  • Fixes broken renovate/major-linters branch (can now merge to main)
  • Reduces duplication: shared rules defined once
  • Ensures consistency across frontend and backend
  • Modern ESLint 9 flat config format

Testing

  • npm ci completes successfully in both backend and frontend
  • npm run lint works in both directories
  • All existing rules preserved

Related

Combines PR #199 (backend) and PR #200 (frontend) into a single PR targeting main directly.

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.
Copy link
Contributor

Copilot AI left a 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.

Copy link
Contributor

Copilot AI left a 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.

@DerekRoberts DerekRoberts changed the title feat: migrate ESLint to flat config (backend + frontend + shared base) feat: migrate ESLint to flat config Nov 3, 2025
@DerekRoberts DerekRoberts merged commit 8597709 into main Nov 4, 2025
29 checks passed
@DerekRoberts DerekRoberts deleted the feat/frontend-eslint-flat-config-shared-base-main branch November 4, 2025 00:25
@github-project-automation github-project-automation bot moved this from Active to Done in DevOps (NR) Nov 4, 2025
@DerekRoberts DerekRoberts linked an issue Nov 5, 2025 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

chore: replace stale eslint-config-airbnb-base

2 participants