MCPcopy Index your code
hub / github.com/vuejs/eslint-plugin-vue

github.com/vuejs/eslint-plugin-vue @v10.9.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v10.9.2 ↗ · + Follow
2,258 symbols 5,136 edges 690 files 1,045 documented · 46% 107 cross-repo links updated 2d agov10.9.2 · 2026-06-03★ 4,595184 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

eslint-plugin-vue

NPM version NPM downloads CI License

Official ESLint plugin for Vue.js

:book: Documentation

Please refer to the official website.

:anchor: Versioning Policy

This plugin follows Semantic Versioning. However, please note that we do not follow ESLint's Semantic Versioning Policy. In minor version releases, this plugin may change the sharable configs provided by the plugin or the default behavior of the plugin's rules in order to add features to the plugin. Because we want to add many features to the plugin soon, so that users can easily take advantage of new features in Vue and Nuxt.

According to our policy, any minor update may report more linting errors than the previous release. As such, we recommend using the tilde (~) in package.json to guarantee the results of your builds.

:newspaper: Releases

This project uses GitHub Releases.

:beers: Contribution Guide

Contributing is welcome! See the ESLint Vue Plugin Developer Guide.

Working With Rules

Be sure to read the official ESLint guide before you start writing a new rule.

To see what an abstract syntax tree (AST) of your code looks like, you may use AST Explorer. After opening AST Explorer, select Vue as the syntax and vue-eslint-parser as the parser.

The default JavaScript parser must be replaced because Vue.js single file components are not plain JavaScript, but a custom file format. vue-eslint-parser is a replacement parser that generates an enhanced AST with nodes that represent specific parts of the template syntax, as well as the contents of the <script> tag.

To learn more about certain nodes in a produced AST, see the ESTree project page and the vue-eslint-parser AST documentation.

vue-eslint-parser provides a few useful parser services to help traverse the produced AST and access template tokens:

  • context.parserServices.defineTemplateBodyVisitor(visitor, scriptVisitor)
  • context.parserServices.getTemplateBodyTokenStore()

Check out an example rule to see usage of these services.

Be aware that depending on the code samples you write in tests, the RuleTester parser property must be set accordingly (this can be done on a test by test basis). See an example here.

If you're stuck, remember there are many rules available for reference. If you can't find the right solution, don't hesitate to reach out in issues – we're happy to help!

:lock: License

See the LICENSE file for license rights and limitations (MIT).

Extension points exported contracts — how you extend this code

IPropertyReferences (Interface)
(no doc) [3 implementers]
lib/utils/property-references.ts
ConditionalFamily (Interface)
* A conditional family is made up of a group of repeated components that are conditionally rendered * using v-if, v-els
lib/rules/v-if-else-key.ts
GroupState (Interface)
(no doc)
lib/processor.ts
LoadedPattern (Interface)
(no doc)
tests/lib/utils/ref-object-references.test.ts
Visitor (Interface)
(no doc)
typings/vue-eslint-parser/index.d.ts
TSNodeListener (Interface)
(no doc)
typings/eslint-plugin-vue/util-types/indent-helper.ts
Plugin (Interface)
(no doc)
typings/eslint/index.d.ts
RefObjectReferences (Interface)
(no doc) [1 implementers]
lib/utils/ref-object-references.ts

Core symbols most depended-on inside this repo

report
called by 420
typings/eslint/index.d.ts
setOffset
called by 199
lib/utils/indent-common.ts
getFirstToken
called by 170
typings/eslint-plugin-vue/util-types/parser-services.ts
getTokenAfter
called by 134
typings/eslint-plugin-vue/util-types/parser-services.ts
get
called by 114
lib/utils/ref-object-references.ts
checker
called by 106
lib/rules/require-emit-validator.js
getTypeScriptFixtureTestOptions
called by 71
tests/test-utils/typescript.ts
getTokenBefore
called by 59
typings/eslint-plugin-vue/util-types/parser-services.ts

Shape

Function 1,853
Interface 236
Method 129
Class 38
Enum 2

Languages

TypeScript100%

Modules by API surface

lib/utils/index.js148 symbols
lib/utils/indent-common.ts97 symbols
typings/eslint-plugin-vue/util-types/ast/es-ast.ts88 symbols
lib/utils/indent-ts.ts75 symbols
typings/eslint/index.d.ts63 symbols
lib/utils/property-references.ts49 symbols
lib/utils/ref-object-references.ts36 symbols
lib/rules/no-use-computed-property-like-method.js31 symbols
lib/utils/selector.ts28 symbols
lib/rules/no-unused-properties.ts27 symbols
lib/rules/no-undef-properties.ts26 symbols
typings/eslint-plugin-vue/util-types/parser-services.ts24 symbols

Dependencies from manifests, versioned

@changesets/cli2.29.8 · 1×
@eslint-community/eslint-utils4.4.0 · 1×
@eslint/markdown7.5.1 · 1×
@ota-meshi/site-kit-eslint-editor-vue0.2.4 · 1×
@stylistic/eslint-plugin5.7.0 · 1×
@svitejs/changesets-changelog-github-compact1.2.0 · 1×
@types/eslint9.6.1 · 1×
@types/espree10.1.0 · 1×
@types/natural-compare1.4.3 · 1×
@types/node24.0.8 · 1×
@types/semver7.7.1 · 1×
@types/xml-name-validator4.0.3 · 1×

For agents

$ claude mcp add eslint-plugin-vue \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact