Skip to content

☂️ eslint-plugin-vue #11440

@camc314

Description

@camc314

Warning

This comment is maintained by CI. Do not edit this comment directly.
To update comment template, see https://github.com/oxc-project/oxc/tree/main/tasks/lint_rules

This is the tracking issue for eslint-plugin-vue.

There are 244(+ 4 deprecated) rules.

  • 1/8 recommended rules are remaining as TODO
    • 2 of which have pending fixes
  • 70/236 not recommended rules are remaining as TODO
    • 3 of which have pending fixes

To get started, run the following command:

just new-vue-rule <RULE_NAME>

Then register the rule in crates/oxc_linter/src/rules.rs and also declare_all_lint_rules at the bottom.

Recommended rules

✅: 2, 🚫: 5, ⏳: 2 / total: 8
Status Name
🚫 vue/attributes-order
🚫 vue/block-order
🚫 vue/no-lone-template
✅⏳ vue/no-multiple-slot-args
✅⏳ vue/no-required-prop-with-default
🚫 vue/no-v-html
vue/order-in-components
🚫 vue/this-in-template

✅ = Implemented, 🚫 = No need to implement, ⏳ = Fix pending

Not recommended rules

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

✅ = Implemented, 🚫 = No need to implement, ⏳ = Fix pending

Deprecated rules

✅: 0, 🚫: 4, ⏳: 0 / total: 4
Status Name
🚫 vue/no-v-for-template-key
🚫 vue/no-v-model-argument
🚫 vue/valid-model-definition
🚫 vue/valid-v-bind-sync

✅ = Implemented, 🚫 = No need to implement, ⏳ = Fix pending

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-linterArea - LinterC-enhancementCategory - New feature or requestE-Help WantedExperience level - For the experienced collaborators

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions