chore: replace eslint with oxlint#4678
Conversation
Replace ESLint and 10 related dependencies with oxlint for significantly faster linting (70ms vs seconds). All existing lint rules are mapped to their oxlint equivalents in .oxlintrc.json. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Review Summary by QodoReplace ESLint with oxlint for faster linting
WalkthroughsDescription• Replace ESLint with oxlint for significantly faster linting • Migrate all lint rules to .oxlintrc.json configuration • Remove 10 ESLint-related dependencies from devDependencies • Update lint scripts and lint-staged configuration Diagramflowchart LR
ESLint["ESLint + 10 dependencies"]
Oxlint["Oxlint single dependency"]
Config["eslint.config.mjs"]
NewConfig[".oxlintrc.json"]
Scripts["package.json scripts"]
ESLint -- "replaced by" --> Oxlint
Config -- "replaced by" --> NewConfig
Scripts -- "updated to use" --> Oxlint
File Changes1. .oxlintrc.json
|
Code Review by Qodo
1. Unresolvable $schema path
|
|
This pull request is automatically built and testable in CodeSandbox. To see build info of the built libraries, click here or the icon next to each commit SHA. |
There was a problem hiding this comment.
Pull request overview
This PR migrates the repo’s linting workflow from ESLint to oxlint to reduce lint runtime, replacing the ESLint configuration and dependencies with an .oxlintrc.json-based setup.
Changes:
- Replace
lint/lint-fixscripts to useoxlint, and runoxlint --fixvialint-stagedfor*.{ts,js}. - Remove the existing
eslint.config.mjsflat-config and introduce.oxlintrc.json. - Update dependencies/lockfile to add
oxlint(and its platform bindings) and remove ESLint-related devDependencies.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
package.json |
Switches lint scripts and lint-staged to oxlint; removes ESLint-related devDependencies; adds packageManager pin. |
eslint.config.mjs |
Deletes the ESLint flat config previously defining TypeScript/import/vitest lint behavior. |
.oxlintrc.json |
Adds the new oxlint configuration, including ignore patterns, plugins, and rule overrides. |
yarn.lock |
Adds oxlint and platform-specific optional bindings to the lockfile. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Move no-empty and no-var off to a TS-only override to match old ESLint behavior (was incorrectly global) - Enable vitest/no-import-node-test for test files - Document unmappable rules: import/no-extraneous-dependencies, valid-expect-in-promise, and vitest recommended rules that require the jest plugin (blocked by max-nested-describe conflict) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 3 out of 4 changed files in this pull request and generated 2 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Replace Prettier with oxfmt (oxc formatter) and reformat the codebase. Oxfmt targets Prettier-default parity; differences are minor line-wrapping choices. This completes the migration from ESLint/Prettier to the oxc toolchain (oxlint + oxfmt). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rconfig - Rename .prettierignore to .oxfmtignore and pass --ignore-path explicitly - Document that oxlint/oxfmt require Node >= 20 for local development - Add indent_size = 2 to .editorconfig for space-indented file types Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Run oxlint and oxfmt in a single task group for *.{ts,js} files, and
only oxfmt for *.{json,yml,md}. Prevents duplicate processing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace ESLint and 10 related dependencies with oxlint for significantly faster linting (70ms vs seconds). All existing lint rules are mapped to their oxlint equivalents in .oxlintrc.json.