The largest blocker. js/src/eslint/vue.js explicitly configures 39 vue/* rules; oxlint ships 46 Vue rules in total, but only 7 of the 39 overlap. Measured against oxlint as installed in js/pnpm-lock.yaml by scanning node_modules/oxlint/configuration_schema.json.
Covered by oxlint today: define-emits-declaration, define-props-declaration, next-tick-style, no-required-prop-with-default, require-typed-ref, valid-define-options, max-props.
Missing, and therefore load-bearing for keeping ESLint:
vue/attributes-order vue/no-restricted-props
vue/block-lang vue/no-static-inline-styles
vue/block-order vue/no-template-target-blank
vue/component-api-style vue/no-unused-emit-declarations
vue/component-name-in-template-casing vue/no-unused-properties
vue/custom-event-name-casing vue/no-unused-refs
vue/define-macros-order vue/no-useless-mustaches
vue/html-button-has-type vue/no-useless-v-bind
vue/match-component-import-name vue/prefer-separate-static-class
vue/max-template-depth vue/prefer-true-attribute-shorthand
vue/multi-word-component-names vue/prefer-use-template-ref
vue/no-boolean-default vue/require-explicit-emits
vue/no-duplicate-attr-inheritance vue/require-macro-variable-name
vue/no-empty-component-block vue/slot-name-casing
vue/no-ref-object-reactivity-loss vue/v-for-delimiter-style
vue/no-restricted-html-elements vue/valid-v-slot
The real gap is larger than 32. The preset also spreads vue.configs['flat/recommended'], which enables roughly 60 further rules that are not named individually here, so they are not in this count.
What needs to happen
Not all 32 are equally worth keeping. Before treating this as "wait for oxlint to ship 32 rules":
Definition of done
Every must-keep rule either has an oxlint equivalent, or a recorded decision to stop enforcing it.
The largest blocker.
js/src/eslint/vue.jsexplicitly configures 39vue/*rules; oxlint ships 46 Vue rules in total, but only 7 of the 39 overlap. Measured againstoxlintas installed injs/pnpm-lock.yamlby scanningnode_modules/oxlint/configuration_schema.json.Covered by oxlint today:
define-emits-declaration,define-props-declaration,next-tick-style,no-required-prop-with-default,require-typed-ref,valid-define-options,max-props.Missing, and therefore load-bearing for keeping ESLint:
The real gap is larger than 32. The preset also spreads
vue.configs['flat/recommended'], which enables roughly 60 further rules that are not named individually here, so they are not in this count.What needs to happen
Not all 32 are equally worth keeping. Before treating this as "wait for oxlint to ship 32 rules":
v-for-delimiter-style,attributes-order) that oxfmt may subsume or that we could simply stop enforcing.flat/recommendedrules, which are mostly correctness rather than style and matter more.js/scripts/if this drags on.Definition of done
Every must-keep rule either has an oxlint equivalent, or a recorded decision to stop enforcing it.