Skip to content

Migrate lint pipeline from ESLint/Prettier to Oxlint/oxfmt - #905

Open
YusukeHirao wants to merge 11 commits into
v6from
feat/oxlint-migration
Open

Migrate lint pipeline from ESLint/Prettier to Oxlint/oxfmt#905
YusukeHirao wants to merge 11 commits into
v6from
feat/oxlint-migration

Conversation

@YusukeHirao

Copy link
Copy Markdown
Member

Summary

  • Add @d-zero/oxlint-config and @d-zero/oxlint-plugin (ports no-click-event from @d-zero/eslint-plugin; Vue @click/v-on:click is intentionally not detected, see MIGRATION-v6.md)
  • Add an Astro preset to @d-zero/prettier-config
  • Switch @d-zero/lint-staged-config's default extension mapping from eslint/prettier to oxlint/oxfmt
  • Deprecate @d-zero/eslint-config and @d-zero/eslint-plugin (removal planned for v7)
  • Migrate the root lint pipeline (lint/lint:ci/lint:fix) to oxlint + oxfmt, keeping Prettier for Pug/Astro only
  • Document the migration in MIGRATION-v6.md
  • Normalize package.json field 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)

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
YusukeHirao force-pushed the feat/oxlint-migration branch from fad7505 to f29e541 Compare August 14, 2026 17:45
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.

1 participant