Migrate lint pipeline from ESLint/Prettier to Oxlint/oxfmt - #905
Open
YusukeHirao wants to merge 11 commits into
Open
Migrate lint pipeline from ESLint/Prettier to Oxlint/oxfmt#905YusukeHirao wants to merge 11 commits into
YusukeHirao wants to merge 11 commits into
Conversation
YusukeHirao
requested review from
arktds,
dz-furukawa,
teppei-d and
yusasa16
as code owners
August 14, 2026 07:49
Provide a base Oxlint configuration that projects can extend, mirroring the structure of the existing *-config packages.
Port the no-click-event rule from @d-zero/eslint-plugin to an Oxlint-compatible plugin, with direct unit tests via ESLint's Linter class and CLI fixtures covering JS/TS/JSX/TSX. Vue templates are intentionally not covered (see MIGRATION-v6.md).
Add a prettier-plugin-astro-based preset so Astro files continue to be formatted by Prettier after the move to oxfmt for other file types.
Replace eslint/prettier with oxlint/oxfmt across the default extension-to-command mapping, and add coverage for representative extensions (ts, vue, css, html, json, yaml).
@d-zero/eslint-config is superseded by @d-zero/oxlint-config and will be removed in v7.
@d-zero/eslint-plugin is superseded by @d-zero/oxlint-plugin and will be removed in v7.
Purely mechanical reordering with no dependency or behavior changes, plus the oxfmt reformatting of markuplint/stylelint test fixtures that the new formatter pipeline applied to them.
Introduce oxlint and oxfmt as the primary lint/format tools for JS/TS/JSON/CSS/SCSS/HTML/Markdown/YAML, keeping Prettier only for Pug and Astro. Add the root oxlint.config.mts and .oxfmtrc.json, rework the lint/lint:ci/lint:fix scripts, add CLI integration tests for the new tools, and document the migration in MIGRATION-v6.md.
The test workflow only targeted main and dev, so PRs into the v6 integration branch never triggered CI.
Windows CI runners checkout text files with CRLF by default, which made every file fail the new oxfmt --check step in CI even though lint:oxfmt passes locally. Force LF line endings on checkout so formatting checks behave the same across platforms.
YusukeHirao
force-pushed
the
feat/oxlint-migration
branch
from
August 14, 2026 17:45
fad7505 to
f29e541
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@d-zero/oxlint-configand@d-zero/oxlint-plugin(portsno-click-eventfrom@d-zero/eslint-plugin; Vue@click/v-on:clickis intentionally not detected, see MIGRATION-v6.md)@d-zero/prettier-config@d-zero/lint-staged-config's default extension mapping from eslint/prettier to oxlint/oxfmt@d-zero/eslint-configand@d-zero/eslint-plugin(removal planned for v7)lint/lint:ci/lint:fix) to oxlint + oxfmt, keeping Prettier for Pug/Astro onlyMIGRATION-v6.mdpackage.jsonfield order across all packages (mechanical, no behavior change)Test plan
yarn test(169 tests passing, including new oxlint-plugin unit tests and CLI integration tests)yarn lint(tsc/oxlint/oxfmt/prettier/textlint/cspell/secretlint/actionlint all pass)