Upgrade ESLint to v10 with compatibility fixes#8049
Upgrade ESLint to v10 with compatibility fixes#8049
Conversation
Generate changelog in
|
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Upgrades ESLint to v10 across the monorepo and applies compatibility adjustments in @blueprintjs/eslint-config to keep linting working with updated plugins.
Changes:
- Bump ESLint (and related tooling) to
^10.2.0across root and tooling packages. - Expand
@blueprintjs/eslint-pluginpeer dependency range to include ESLint 10. - Add
@eslint/compatand apply rule fixups / config tweaks in@blueprintjs/eslint-config.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/node-build-scripts/package.json | Updates ESLint + formatter versions used by build scripts. |
| packages/eslint-plugin/package.json | Updates TS-ESLint utilities and expands ESLint peer range to v10. |
| packages/eslint-config/package.json | Upgrades ESLint/plugins and adds @eslint/compat for ESLint 10 compatibility. |
| packages/eslint-config/index.js | Uses @eslint/compat fixups and adjusts flat config options for ESLint 10. |
| package.json | Updates root ESLint + typescript-eslint versions. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| module.exports = tseslint.config( | ||
| blueprintPlugin.flatConfigs.recommended, | ||
| importPlugin.flatConfigs.typescript, | ||
| { |
There was a problem hiding this comment.
This drops importPlugin.flatConfigs.typescript from the composed config. If you still intend to apply eslint-plugin-import’s TypeScript flat config (rules/settings/resolvers), it should be re-added (or replaced with the plugin’s updated flat-config entry point for v2.32+) instead of being removed.
| const { fixupPluginRules } = require("@eslint/compat"); | ||
| const headerPlugin = fixupPluginRules(require("eslint-plugin-header")); | ||
| const importPlugin = fixupPluginRules(require("eslint-plugin-import")); | ||
| const jsDocPlugin = require("eslint-plugin-jsdoc"); | ||
| const jsxA11yPlugin = require("eslint-plugin-jsx-a11y"); | ||
| const reactPlugin = require("eslint-plugin-react"); | ||
| const reactPlugin = fixupPluginRules(require("eslint-plugin-react")); | ||
| const reactHooksPlugin = require("eslint-plugin-react-hooks"); |
There was a problem hiding this comment.
With eslint-plugin-jsdoc bumped to ^62.9.0, verify it still supports CommonJS require(); if it is ESM-only in this major, this config will throw at load time. If so, either pin to a CJS-compatible major or migrate this config entry point to ESM/dynamic import.
|
|
||
| // ESLint 9 requires all rules with options to have a schema, but | ||
| // eslint-plugin-header doesn't do this yet... | ||
| // ESLint requires option schemas; eslint-plugin-header's rule metadata is missing one. |
There was a problem hiding this comment.
The comment says ESLint requires option schemas, but the code sets meta.schema = false, which disables schema validation rather than providing a schema. Either update the comment to describe this as a workaround to bypass schema enforcement, or set meta.schema to an appropriate JSON schema / [] (if the rule truly takes no options).
| // ESLint requires option schemas; eslint-plugin-header's rule metadata is missing one. | |
| // Work around eslint-plugin-header missing rule option schema metadata by disabling | |
| // ESLint schema validation for this rule. |
chore(eslint): upgrade to v10 and add plugin compatibility fixesBuild artifact links for this commit: documentation | landing | table | demo | storybookThis is an automated comment from the deploy-preview CircleCI job. |
Summary
@blueprintjs/eslint-pluginpeer range to include ESLint 10@blueprintjs/eslint-config(including required plugin rule fixups)Testing