Vize

ESLint rule migration map

The committed ESLint mapping records 252 rule IDs: 123 mapped, 2 intentional divergences, and 127 unimplemented. A mapped ID identifies a Vize rule; it does not guarantee identical options, findings, fixes, or coverage.

Enable Vize rules under lint.vize.rules in the Vite+ configuration. Keep JS/TS rules handled by Oxlint in lint.rules. Do not copy an ESLint option tuple directly: Vize severity and typed ruleOptions are separate.

 import vue from "eslint-plugin-vue";
 export default [{ plugins: { vue }, rules: { "vue/attributes-order": "warn" } }];
 import { defineConfig } from "@vizejs/vite-plugin/vite-plus";
 export default defineConfig({
   lint: { vize: { rules: { "vue/attribute-order": "warn" } } },
 });

Remove only the overlapping Vue rule after checking the linked Bad/Good examples. Run vp run lint; if an existing package script occupies that task name, the generated task is vp run vize:lint. Explicit task configuration takes precedence.

vue/component-definition-name-casing has a deliberate scope difference: Vize checks the SFC filename, while ESLint checks the component definition name. The mapping below retains this distinction.

For option conversion, see Rule Options and props destructuring modes. Unsupported rows must stay with an existing checker until a supported replacement is verified.

ESLint ID Vize ID / reference Status
vue/array-bracket-newline — unimplemented
vue/array-bracket-spacing — unimplemented
vue/array-element-newline — unimplemented
vue/arrow-spacing — unimplemented
vue/attribute-hyphenation vue/attribute-hyphenation mapped
vue/attributes-order vue/attribute-order mapped
vue/block-lang — unimplemented
vue/block-order vue/sfc-element-order mapped
vue/block-spacing — unimplemented
vue/block-tag-newline — unimplemented
vue/brace-style — unimplemented
vue/camelcase — unimplemented
vue/comma-dangle — unimplemented
vue/comma-spacing — unimplemented
vue/comma-style — unimplemented
vue/comment-directive — unimplemented
vue/component-api-style — unimplemented
vue/component-definition-name-casing — intentional-divergence
vue/component-name-in-template-casing vue/component-name-in-template-casing mapped
vue/component-options-name-casing script/component-options-name-casing mapped
vue/custom-event-name-casing script/custom-event-name-casing mapped
vue/define-emits-declaration script/define-emits-declaration mapped
vue/define-macros-order script/define-macros-order mapped
vue/define-props-declaration script/define-props-declaration mapped
vue/define-props-destructuring script/define-props-destructuring mapped
vue/dot-location — unimplemented
vue/dot-notation — unimplemented
vue/enforce-style-attribute — unimplemented
vue/eqeqeq — unimplemented
vue/first-attribute-linebreak — unimplemented
vue/func-call-spacing — unimplemented
vue/html-button-has-type vue/html-button-has-type mapped
vue/html-closing-bracket-newline — unimplemented
vue/html-closing-bracket-spacing — unimplemented
vue/html-comment-content-newline — unimplemented
vue/html-comment-content-spacing — unimplemented
vue/html-comment-indent — unimplemented
vue/html-end-tags — unimplemented
vue/html-indent — unimplemented
vue/html-quotes vue/html-quotes mapped
vue/html-self-closing vue/html-self-closing mapped
vue/jsx-uses-vars — unimplemented
vue/key-spacing — unimplemented
vue/keyword-spacing — unimplemented
vue/match-component-file-name — unimplemented
vue/match-component-import-name — unimplemented
vue/max-attributes-per-line — unimplemented
vue/max-len — unimplemented
vue/max-lines-per-block — unimplemented
vue/max-props — unimplemented
vue/max-template-depth — unimplemented
vue/multi-word-component-names vue/multi-word-component-names mapped
vue/multiline-html-element-content-newline — unimplemented
vue/multiline-ternary — unimplemented
vue/mustache-interpolation-spacing vue/mustache-interpolation-spacing mapped
vue/new-line-between-multi-line-property — unimplemented
vue/next-tick-style — unimplemented
vue/no-arrow-functions-in-watch script/no-arrow-functions-in-watch mapped
vue/no-async-in-computed-properties script/no-async-in-computed mapped
vue/no-bare-strings-in-template vue/no-bare-strings-in-template mapped
vue/no-boolean-default script/no-boolean-default mapped
vue/no-child-content vue/no-child-content mapped
vue/no-computed-properties-in-data — unimplemented
vue/no-console — unimplemented
vue/no-constant-condition — unimplemented
vue/no-custom-modifiers-on-v-model — unimplemented
vue/no-deprecated-data-object-declaration script/no-deprecated-data-object-declaration mapped
vue/no-deprecated-delete-set — unimplemented
vue/no-deprecated-destroyed-lifecycle script/no-deprecated-destroyed-lifecycle mapped
vue/no-deprecated-dollar-listeners-api script/no-deprecated-dollar-listeners-api mapped
vue/no-deprecated-dollar-scopedslots-api script/no-deprecated-dollar-scopedslots-api mapped
vue/no-deprecated-events-api script/no-deprecated-events-api mapped
vue/no-deprecated-filter vue/no-deprecated-filter mapped
vue/no-deprecated-functional-template vue/no-deprecated-functional-template mapped
vue/no-deprecated-html-element-is vue/no-deprecated-html-element-is mapped
vue/no-deprecated-inline-template vue/no-deprecated-inline-template mapped
vue/no-deprecated-model-definition — unimplemented
vue/no-deprecated-props-default-this script/no-deprecated-props-default-this mapped
vue/no-deprecated-router-link-tag-prop vue/no-deprecated-router-link-tag-prop mapped
vue/no-deprecated-scope-attribute vue/no-deprecated-scope-attribute mapped
vue/no-deprecated-slot-attribute vue/no-deprecated-slot-attribute mapped
vue/no-deprecated-slot-scope-attribute vue/no-deprecated-slot-scope-attribute mapped
vue/no-deprecated-v-bind-sync vue/no-deprecated-v-bind-sync mapped
vue/no-deprecated-v-is — unimplemented
vue/no-deprecated-v-on-native-modifier vue/no-deprecated-v-on-native-modifier mapped
vue/no-deprecated-v-on-number-modifiers vue/no-deprecated-v-on-number-modifiers mapped
vue/no-deprecated-vue-config-keycodes — unimplemented
vue/no-dupe-keys script/no-dupe-keys mapped
vue/no-dupe-v-else-if vue/no-dupe-v-else-if mapped
vue/no-duplicate-attr-inheritance script/no-duplicate-attr-inheritance mapped
vue/no-duplicate-attributes vue/no-duplicate-attributes mapped
vue/no-duplicate-class-names — unimplemented
vue/no-empty-component-block vue/no-empty-component-block mapped
vue/no-empty-pattern — unimplemented
vue/no-export-in-script-setup script/no-export-in-script-setup mapped
vue/no-expose-after-await — unimplemented
vue/no-extra-parens — unimplemented
vue/no-implicit-coercion — unimplemented
vue/no-import-compiler-macros script/no-import-compiler-macros mapped
vue/no-irregular-whitespace — unimplemented
vue/no-lifecycle-after-await — unimplemented
vue/no-literals-in-template — unimplemented
vue/no-lone-template vue/no-lone-template mapped
vue/no-loss-of-precision — unimplemented
vue/no-multi-spaces vue/no-multi-spaces mapped
vue/no-multiple-objects-in-class vue/no-multiple-objects-in-class mapped
vue/no-multiple-slot-args script/no-multiple-slot-args mapped
vue/no-multiple-template-root vue/no-multiple-template-root mapped
vue/no-mutating-props vue/no-mutating-props mapped
vue/no-negated-condition — unimplemented
vue/no-negated-v-if-condition vue/no-negated-v-if-condition mapped
vue/no-parsing-error — unimplemented
vue/no-potential-component-option-typo script/no-potential-component-option-typo mapped
vue/no-ref-as-operand script/no-ref-as-operand mapped
vue/no-ref-object-reactivity-loss — unimplemented
vue/no-required-prop-with-default script/no-required-prop-with-default mapped
vue/no-reserved-component-names vue/no-reserved-component-names mapped
vue/no-reserved-keys script/no-reserved-keys mapped
vue/no-reserved-props script/no-reserved-props mapped
vue/no-restricted-block — unimplemented
vue/no-restricted-call-after-await — unimplemented
vue/no-restricted-class — unimplemented
vue/no-restricted-component-names — unimplemented
vue/no-restricted-component-options — unimplemented
vue/no-restricted-custom-event — unimplemented
vue/no-restricted-html-elements — unimplemented
vue/no-restricted-props — unimplemented
vue/no-restricted-static-attribute — unimplemented
vue/no-restricted-syntax — unimplemented
vue/no-restricted-v-bind — unimplemented
vue/no-restricted-v-on — unimplemented
vue/no-root-v-if vue/no-root-v-if mapped
vue/no-setup-props-reactivity-loss — unimplemented
vue/no-shared-component-data — unimplemented
vue/no-side-effects-in-computed-properties script/no-side-effects-in-computed-properties mapped
vue/no-spaces-around-equal-signs-in-attribute — unimplemented
vue/no-sparse-arrays — unimplemented
vue/no-static-inline-styles vue/no-static-inline-styles mapped
vue/no-template-key vue/no-template-key mapped
vue/no-template-shadow vue/no-template-shadow mapped
vue/no-template-target-blank vue/no-template-target-blank mapped
vue/no-textarea-mustache vue/no-textarea-mustache mapped
vue/no-this-in-before-route-enter — unimplemented
vue/no-undef-components — unimplemented
vue/no-undef-directives — unimplemented
vue/no-undef-properties — unimplemented
vue/no-unsupported-features — unimplemented
vue/no-unused-components vue/no-unused-components mapped
vue/no-unused-emit-declarations script/no-unused-emit-declarations mapped
vue/no-unused-properties — intentional-divergence
vue/no-unused-refs vue/no-unused-refs mapped
vue/no-unused-vars vue/no-unused-vars mapped
vue/no-use-computed-property-like-method script/no-use-computed-property-like-method mapped
vue/no-use-v-else-with-v-for vue/no-use-v-else-with-v-for mapped
vue/no-use-v-if-with-v-for vue/no-use-v-if-with-v-for mapped
vue/no-useless-concat — unimplemented
vue/no-useless-mustaches vue/no-useless-mustaches mapped
vue/no-useless-template-attributes vue/no-useless-template-attributes mapped
vue/no-useless-v-bind vue/no-useless-v-bind mapped
vue/no-v-for-template-key — unimplemented
vue/no-v-for-template-key-on-child vue/no-v-for-template-key-on-child mapped
vue/no-v-html vue/no-v-html mapped
vue/no-v-model-argument — unimplemented
vue/no-v-text vue/no-v-text mapped
vue/no-v-text-v-html-on-component vue/no-v-text-v-html-on-component mapped
vue/no-watch-after-await — unimplemented
vue/object-curly-newline — unimplemented
vue/object-curly-spacing — unimplemented
vue/object-property-newline — unimplemented
vue/object-shorthand — unimplemented
vue/one-component-per-file — unimplemented
vue/operator-linebreak — unimplemented
vue/order-in-components — unimplemented
vue/padding-line-between-blocks — unimplemented
vue/padding-line-between-tags — unimplemented
vue/padding-lines-in-component-definition — unimplemented
vue/prefer-define-options script/prefer-define-options mapped
vue/prefer-import-from-vue script/prefer-import-from-vue mapped
vue/prefer-prop-type-boolean-first — unimplemented
vue/prefer-separate-static-class — unimplemented
vue/prefer-single-event-payload — unimplemented
vue/prefer-template — unimplemented
vue/prefer-true-attribute-shorthand vue/prefer-true-attribute-shorthand mapped
vue/prefer-use-template-ref script/prefer-use-template-ref mapped
vue/prefer-v-model — unimplemented
vue/prop-name-casing vue/prop-name-casing mapped
vue/quote-props — unimplemented
vue/require-component-is vue/require-component-is mapped
vue/require-default-export — unimplemented
vue/require-default-prop script/require-default-prop mapped
vue/require-direct-export — unimplemented
vue/require-emit-validator — unimplemented
vue/require-explicit-emits script/require-explicit-emits mapped
vue/require-explicit-slots script/require-explicit-slots mapped
vue/require-expose — unimplemented
vue/require-macro-variable-name — unimplemented
vue/require-name-property — unimplemented
vue/require-prop-comment — unimplemented
vue/require-prop-type-constructor script/require-prop-type-constructor mapped
vue/require-prop-types script/require-prop-types mapped
vue/require-render-return — unimplemented
vue/require-slots-as-functions — unimplemented
vue/require-toggle-inside-transition vue/require-toggle-inside-transition mapped
vue/require-typed-object-prop script/require-typed-object-prop mapped
vue/require-typed-ref script/require-typed-ref mapped
vue/require-v-for-key vue/require-v-for-key mapped
vue/require-valid-default-prop script/require-valid-default-prop mapped
vue/restricted-component-names — unimplemented
vue/return-in-computed-property script/return-in-computed-property mapped
vue/return-in-emits-validator script/return-in-emits-validator mapped
vue/script-indent — unimplemented
vue/singleline-html-element-content-newline — unimplemented
vue/slot-name-casing vue/slot-name-casing mapped
vue/sort-keys — unimplemented
vue/space-in-parens — unimplemented
vue/space-infix-ops — unimplemented
vue/space-unary-ops — unimplemented
vue/static-class-names-order — unimplemented
vue/template-curly-spacing — unimplemented
vue/this-in-template vue/this-in-template mapped
vue/use-v-on-exact vue/use-v-on-exact mapped
vue/v-bind-style vue/v-bind-style mapped
vue/v-for-delimiter-style — unimplemented
vue/v-if-else-key — unimplemented
vue/v-on-event-hyphenation vue/v-on-event-hyphenation mapped
vue/v-on-handler-style vue/v-on-handler-style mapped
vue/v-on-style vue/v-on-style mapped
vue/v-slot-style vue/v-slot-style mapped
vue/valid-attribute-name vue/valid-attribute-name mapped
vue/valid-define-emits script/valid-define-emits mapped
vue/valid-define-options script/valid-define-options mapped
vue/valid-define-props script/valid-define-props mapped
vue/valid-model-definition — unimplemented
vue/valid-next-tick script/valid-next-tick mapped
vue/valid-template-root vue/valid-template-root mapped
vue/valid-v-bind vue/valid-v-bind mapped
vue/valid-v-bind-sync — unimplemented
vue/valid-v-cloak vue/valid-v-cloak mapped
vue/valid-v-else vue/valid-v-else mapped
vue/valid-v-else-if — unimplemented
vue/valid-v-for vue/valid-v-for mapped
vue/valid-v-html vue/valid-v-html mapped
vue/valid-v-if vue/valid-v-if mapped
vue/valid-v-is — unimplemented
vue/valid-v-memo vue/valid-v-memo mapped
vue/valid-v-model vue/valid-v-model mapped
vue/valid-v-on vue/valid-v-on mapped
vue/valid-v-once vue/valid-v-once mapped
vue/valid-v-pre — unimplemented
vue/valid-v-show vue/valid-v-show mapped
vue/valid-v-slot vue/valid-v-slot mapped
vue/valid-v-text vue/valid-v-text mapped

Committed mapping and capture identity