Skip to content

Migrate to ESLint 9 with flat config#5690

Draft
Copilot wants to merge 8 commits intomasterfrom
copilot/migrate-to-eslint-9
Draft

Migrate to ESLint 9 with flat config#5690
Copilot wants to merge 8 commits intomasterfrom
copilot/migrate-to-eslint-9

Conversation

Copy link
Contributor

Copilot AI commented Jan 30, 2026

ESLint 8 to ESLint 9 Migration - Complete ✅

This PR successfully migrates the repository from ESLint 8 to ESLint 9 with flat config format.

Summary of Changes

  • Updated @talend/eslint-config package to support ESLint 9

    • Updated dependencies to ESLint 9.39.2 and TypeScript ESLint 8.x
    • Created new eslint.config.js using flat config format
    • Migrated all rules from .eslintrc.json to flat config
    • Maintained automatic TypeScript detection
    • Kept index.js as main entry point for compatibility
    • Simplified dependencies (removed unused plugins)
  • Removed lint command from @talend/scripts-core

    • Removed from help documentation
    • Added deprecation message with migration guidance
    • Fixed all exit codes to use standard exit(1)
  • Updated all package lint scripts (36 packages)

    • Replaced "talend-scripts lint" with "eslint ."
    • Restored specific file patterns for packages that had custom paths
    • Standardized all variations to "eslint ."
    • Fixed JSON syntax errors
  • Added ESLint 9 configs to all packages

    • Created eslint.config.js in 51 packages
    • All configs reference @talend/eslint-config
    • Added root-level eslint.config.js
  • Updated documentation

    • Comprehensive README with migration guide
    • Usage examples and customization instructions
    • IDE configuration (VS Code)
    • Breaking changes documentation
  • Code review and security

    • Addressed all code review feedback
    • Fixed ignore patterns to be more specific
    • Security scan passed (0 vulnerabilities)
    • Restored original file patterns for custom lint paths

Breaking Changes

  • Requires ESLint 9.x (was 8.x)
  • Uses flat config format instead of .eslintrc format
  • talend-scripts lint command removed - use eslint . directly
  • Updated plugin dependencies to ESLint 9 compatible versions

Testing Notes

  • All packages now use direct ESLint 9 invocation
  • Configuration dynamically detects TypeScript projects
  • Compatible with existing .eslintrc.json files during transition
  • Root workspace lint command unchanged: yarn lint
  • Packages with specific file patterns maintain their original paths
Original prompt

This section details on the original issue you should resolve

<issue_title>Migrate to eslint 9</issue_title>
<issue_description>Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

We are using a dead eslint 8

Describe the solution you'd like
A clear and concise description of what you want to happen.

  • update scripts-config-eslint to be ready to be used with eslint 9 as a config file
  • remove talend-scripts lint command
  • replace in each packages the lint script from talend-scripts to eslint 9 using the scripts-config-eslint package.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.
</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@changeset-bot
Copy link

changeset-bot bot commented Jan 30, 2026

⚠️ No Changeset found

Latest commit: 133d84a

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copilot AI and others added 5 commits January 30, 2026 15:33
Co-authored-by: jmfrancois <19857479+jmfrancois@users.noreply.github.com>
Co-authored-by: jmfrancois <19857479+jmfrancois@users.noreply.github.com>
Co-authored-by: jmfrancois <19857479+jmfrancois@users.noreply.github.com>
Co-authored-by: jmfrancois <19857479+jmfrancois@users.noreply.github.com>
… and JSON syntax

Co-authored-by: jmfrancois <19857479+jmfrancois@users.noreply.github.com>
Copilot AI changed the title [WIP] Migrate to eslint 9 and update scripts configuration Migrate to ESLint 9 with flat config Jan 30, 2026
Copilot AI requested a review from jmfrancois January 30, 2026 15:45
Copilot AI temporarily deployed to pull_request_unsafe January 30, 2026 16:12 Inactive
Copilot AI temporarily deployed to pull_request_unsafe January 30, 2026 16:12 Inactive
Copilot AI temporarily deployed to pull_request_unsafe January 30, 2026 16:12 Inactive
@github-actions
Copy link
Contributor

Storybook for this PR deployed on this github page

@github-actions
Copy link
Contributor

github-actions bot commented Jan 30, 2026

Title Lines Statements Branches Functions
assets-api Coverage: 28%
28.4% (25/88) 30.76% (16/52) 21.42% (3/14)
cmf Coverage: 89%
89.36% (1243/1391) 80.93% (607/750) 89.51% (350/391)
cmf-cqrs Coverage: 87%
87.43% (160/183) 70.23% (59/84) 84.21% (48/57)
cmf-router Coverage: 70%
69.23% (135/195) 55.71% (78/140) 56.81% (25/44)
components Coverage: 90%
90.7% (5565/6135) 81.59% (3196/3917) 88.14% (1390/1577)
containers Coverage: 84%
83.6% (1392/1665) 74.3% (694/934) 75% (327/436)
dataviz Coverage: 85%
85.44% (323/378) 66.66% (160/240) 75.79% (119/157)
design-system Coverage: 67%
66.49% (1016/1528) 50.84% (543/1068) 53.94% (219/406)
faceted-search Coverage: 85%
85.08% (639/751) 78.63% (287/365) 81.88% (226/276)
flow-designer Coverage: 70%
70.07% (651/929) 66.72% (355/532) 70.92% (200/282)
forms Coverage: 86%
86.27% (1640/1901) 75.89% (929/1224) 85.02% (460/541)
http Coverage: 100%
100% (85/85) 98.07% (51/52) 100% (34/34)
sagas Coverage: 92%
92.3% (24/26) 66.66% (4/6) 50% (2/4)
stepper Coverage: 80%
81.52% (150/184) 59.34% (54/91) 80.85% (38/47)
utils Coverage: 100%
100% (73/73) 90.9% (10/11) 100% (24/24)

"test:watch": "cross-env TZ=UTC talend-scripts test --watch",
"test:cov": "cross-env TZ=UTC talend-scripts test --coverage",
"lint": "talend-scripts lint ./src/**/*.js ./stories/**/*.js ./.storybook/**/*.js",
"lint": "eslint .",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot can you lint only the same files as before please ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. Restored the original file patterns for packages that had specific paths:

  • faceted-search-query-client: eslint ./src/**/*.js ./stories/**/*.js ./.storybook/**/*.js
  • faceted-search: eslint ./src/**/*.js ./stories/**/*.js ./.storybook/**/*.js
  • local-libs-webpack-plugin: eslint lib/**/*.js

These now lint only the same files as before. (commit 32445e7)

…om paths

Co-authored-by: jmfrancois <19857479+jmfrancois@users.noreply.github.com>
@jmfrancois jmfrancois temporarily deployed to pull_request_unsafe February 3, 2026 13:34 — with GitHub Actions Inactive
@jmfrancois jmfrancois temporarily deployed to pull_request_unsafe February 3, 2026 13:34 — with GitHub Actions Inactive
@jmfrancois jmfrancois temporarily deployed to pull_request_unsafe February 3, 2026 13:34 — with GitHub Actions Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate to eslint 9

2 participants