Skip to content

Vue rule parity: 32 configured rules have no oxlint equivalent #1

Description

@Radiergummi

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":

  • Triage the 32 into must-keep, nice-to-have, and drop-on-removal. Several are stylistic preferences (v-for-delimiter-style, attributes-order) that oxfmt may subsume or that we could simply stop enforcing.
  • Do the same for the flat/recommended rules, which are mostly correctness rather than style and matter more.
  • For the must-keep set, open or find upstream oxlint issues and link them here.
  • Re-run the measurement on each oxlint release. The script is in the closing comment of this issue's first analysis; move it into 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    blocked-by-upstreamWaiting on capability in a third-party tooleslint-removalPart of removing ESLint from the preset stack

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions