Skip to content

Conversation

@lumirlumir
Copy link
Member

@lumirlumir lumirlumir commented Dec 2, 2025

Prerequisites checklist

What is the purpose of this pull request?

This PR was motivated by #187 (comment).

Currently, when updating @eslint/core to v1.0.0, CI fails because @eslint/core@1.0.0 does not match ESLint v9

@eslint/core@1.0.0 includes type information for ESLint v10, which causes the type mismatch.

So, I've updated ESLint to >=10.0.0-alpha.0 <10.0.0 || ^10.0.1. (Ref: https://github.com/eslint/eslint/blob/main/packages/eslint-config-eslint/package.json#L66)


When I update ESLint to >=10.0.0-alpha.0 <10.0.0 || ^10.0.1, the following error occurs, so I added the legacy-peer-deps option to .npmrc.

This change follows the approach in eslint/eslint#20281

image

What changes did you make? (Give an overview)

In this PR, I've updated @eslint/core, add legacy-peer-deps, and use ESLint v10 pre-release.

Related Issues

Ref: #187, #187 (comment), eslint/eslint#20281

Is there anything you'd like reviewers to focus on?

N/A

@eslintbot eslintbot added this to Triage Dec 2, 2025
@github-project-automation github-project-automation bot moved this to Needs Triage in Triage Dec 2, 2025
@lumirlumir lumirlumir changed the title chore: update dependency @eslint/core to v1 chore: update @eslint/core to v1 and add legacy-peer-deps to .npmrc Dec 2, 2025
@eslint-github-bot
Copy link

Hi @lumirlumir!, thanks for the Pull Request

The pull request title isn't properly formatted. We ask that you update the pull request title to match this format, as we use it to generate changelogs and automate releases.

  • The length of the commit message must be less than or equal to 72

To Fix: You can fix this problem by clicking 'Edit' next to the pull request title at the top of this page.

Read more about contributing to ESLint here

@lumirlumir lumirlumir changed the title chore: update @eslint/core to v1 and add legacy-peer-deps to .npmrc chore: update @eslint/core to v1 and add legacy-peer-deps Dec 2, 2025
@lumirlumir lumirlumir changed the title chore: update @eslint/core to v1 and add legacy-peer-deps chore: update @eslint/core, add legacy-peer-deps, and use ESLint v10 prerelease Dec 2, 2025
@eslint-github-bot
Copy link

Hi @lumirlumir!, thanks for the Pull Request

The pull request title isn't properly formatted. We ask that you update the pull request title to match this format, as we use it to generate changelogs and automate releases.

  • The length of the commit message must be less than or equal to 72

To Fix: You can fix this problem by clicking 'Edit' next to the pull request title at the top of this page.

Read more about contributing to ESLint here

@lumirlumir lumirlumir changed the title chore: update @eslint/core, add legacy-peer-deps, and use ESLint v10 prerelease chore: update @eslint/core, add legacy-peer-deps, and use ESLint v10 Dec 2, 2025
Copy link
Member Author

Choose a reason for hiding this comment

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

From ESLint v10, errors property in valid test case throws error, so I've removed it.

Ref: https://eslint.org/docs/next/use/migrate-to-10.0.0#stricter-rule-tester

@lumirlumir lumirlumir marked this pull request as ready for review December 2, 2025 17:21
@lumirlumir
Copy link
Member Author

Counterpart PR in eslint/css: eslint/css#337

"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.17.0",
"@eslint/core": "^1.0.0",
Copy link
Member

Choose a reason for hiding this comment

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

Since this is a dependency, will this affect end users who are still using ESLint v9?

Copy link
Member

Choose a reason for hiding this comment

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

The next release will be a major one, so I think it's okay.

Copy link
Member

@nzakas nzakas left a comment

Choose a reason for hiding this comment

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

I'm wondering -- can we just update the types test to use Plugin from @eslint/core instead of ESLint.Plugin?

"license": "Apache-2.0",
"dependencies": {
"@eslint/core": "^0.17.0",
"@eslint/core": "^1.0.0",
Copy link
Member

Choose a reason for hiding this comment

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

The next release will be a major one, so I think it's okay.

@lumirlumir lumirlumir requested a review from fasttime December 4, 2025 02:59
@lumirlumir
Copy link
Member Author

When I look at the history of the ESLint.plugin test, it appears it was added primarily to ensure compatibility with the ESLint.plugin type before the @eslint/core package was stabilized.

Below is the git blame for the related PRs in chronological order:

Personally, I think it would be fine to replace the ESLint.plugin type from eslint with the Plugin type from @eslint/core, since ESLint.plugin is identical to the Plugin type in both v9 and v10.

Would anyone from @eslint/eslint-tsc have any further thoughts on this?

@fasttime
Copy link
Member

fasttime commented Dec 7, 2025

When I look at the history of the ESLint.plugin test, it appears it was added primarily to ensure compatibility with the ESLint.plugin type before the @eslint/core package was stabilized.

Yes, the Plugin type in @eslint/core was added recently, in v0.16.0 (eslint/rewrite#237).

Personally, I think it would be fine to replace the ESLint.plugin type from eslint with the Plugin type from @eslint/core, since ESLint.plugin is identical to the Plugin type in both v9 and v10.

Would anyone from @eslint/eslint-tsc have any further thoughts on this?

I think that's fine.

@lumirlumir lumirlumir moved this from Needs Triage to Implementing in Triage Dec 7, 2025
Copilot AI review requested due to automatic review settings December 7, 2025 12:09
@lumirlumir
Copy link
Member Author

Per the suggestions, I've updated types.test.ts to use the Plugin type instead of ESLint.Plugin in d7d3b71

Copy link

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 updates the repository to work with ESLint v10 pre-release versions and @eslint/core v1.0.0, addressing type compatibility issues between these packages. The changes align with the pattern established in eslint/eslint#20281 for adopting ESLint v10 pre-releases.

  • Updated @eslint/core from ^0.17.0 to ^1.0.0 to include ESLint v10 type information
  • Added legacy-peer-deps = true to .npmrc to bypass peer dependency conflicts during the pre-release period
  • Updated ESLint dependency to use the version range >=10.0.0-alpha.0 <10.0.0 || ^10.0.1 to support v10 pre-releases

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
package.json Updated @eslint/core to v1.0.0 and ESLint to v10 pre-release version range
.npmrc Added legacy-peer-deps flag with TODO comment for removal after ESLint v10 stable release
tests/types/types.test.ts Updated type imports to use Plugin from @eslint/core instead of ESLint.Plugin
tests/rules/sort-keys.test.js Removed erroneous errors array from valid test case (fix for ESLint v10 compatibility)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Implementing

Development

Successfully merging this pull request may close these issues.

5 participants