{"id":13674725,"url":"https://github.com/vuetifyjs/eslint-plugin-vuetify","last_synced_at":"2026-03-17T02:07:31.919Z","repository":{"id":50247525,"uuid":"193264869","full_name":"vuetifyjs/eslint-plugin-vuetify","owner":"vuetifyjs","description":"An eslint plugin for Vuetify","archived":false,"fork":false,"pushed_at":"2025-03-18T11:32:19.000Z","size":288,"stargazers_count":121,"open_issues_count":10,"forks_count":26,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-05-09T14:53:38.429Z","etag":null,"topics":["eslint-plugin","vuetify"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vuetifyjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"KaelWD","patreon":"kaelwd","open_collective":"vuetify"}},"created_at":"2019-06-22T18:07:11.000Z","updated_at":"2025-04-15T09:07:54.000Z","dependencies_parsed_at":"2023-12-08T01:24:43.762Z","dependency_job_id":"aeae159c-3ac9-4253-996b-edecabc8827e","html_url":"https://github.com/vuetifyjs/eslint-plugin-vuetify","commit_stats":{"total_commits":184,"total_committers":13,"mean_commits":"14.153846153846153","dds":"0.20108695652173914","last_synced_commit":"4e6c83b1e6955e886cd4c59dc8cdae0452e27d92"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vuetifyjs%2Feslint-plugin-vuetify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vuetifyjs%2Feslint-plugin-vuetify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vuetifyjs%2Feslint-plugin-vuetify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vuetifyjs%2Feslint-plugin-vuetify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vuetifyjs","download_url":"https://codeload.github.com/vuetifyjs/eslint-plugin-vuetify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254394723,"owners_count":22063984,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eslint-plugin","vuetify"],"created_at":"2024-08-02T11:00:58.053Z","updated_at":"2026-03-17T02:07:31.913Z","avatar_url":"https://github.com/vuetifyjs.png","language":"JavaScript","funding_links":["https://github.com/sponsors/KaelWD","https://patreon.com/kaelwd","https://opencollective.com/vuetify","https://www.patreon.com/kaelwd","https://github.com/sponsors/kaelwd","https://tidelift.com/subscription/npm/vuetify?utm_source=vuetify\u0026utm_medium=referral\u0026utm_campaign=readme","https://paypal.me/vuetify"],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://cdn.vuetifyjs.com/docs/images/one/logos/veslplugin-logo-dark.png\"\u003e\n    \u003cimg alt=\"Vuetify ESLint Plugin Logo\" src=\"https://cdn.vuetifyjs.com/docs/images/one/logos/veslplugin-logo-light.png\" height=\"100\"\u003e\n  \u003c/picture\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/eslint-plugin-vuetify\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/eslint-plugin-vuetify.svg\" alt=\"npm version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://npm.chart.dev/eslint-plugin-vuetify\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/eslint-plugin-vuetify?color=blue\" alt=\"npm downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License: MIT\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://community.vuetifyjs.com\"\u003e\u003cimg src=\"https://discordapp.com/api/guilds/340160225338195969/widget.png\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# eslint-plugin-vuetify\n\nThis package helps migrate between Vuetify major versions. It includes rules for **v2 → v3** and **v3 → v4** migrations.\n\nUse [eslint-plugin-vuetify@vuetify-2](https://www.npmjs.com/package/eslint-plugin-vuetify/v/vuetify-2) for v1 to v2.\n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003eSupport the maintainer of this plugin:\u003c/p\u003e\n\u003ch4 align=\"center\"\u003eKael Watts-Deuchar\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.patreon.com/kaelwd\"\u003e\n    \u003cimg src=\"https://c5.patreon.com/external/logo/become_a_patron_button.png\" alt=\"Become a Patron\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Vuetify 4 Migration\n\n\u003e [!IMPORTANT]\n\u003e We suggest running [vuetify-codemods](https://www.npmjs.com/package/vuetify-codemods) first to automatically apply most migration fixes\n\nThis plugin includes four new rules for migrating from Vuetify v3 to v4:\n\n- **`no-deprecated-typography`** — replaces MD2 typography classes (`text-h1`) with MD3 equivalents (`text-display-large`)\n- **`no-legacy-grid-props`** — converts removed `VRow`/`VCol` props (`align`, `justify`, `dense`) to utility classes or renamed props\n- **`no-elevation-overflow`** — flags elevation classes and props above the MD3 maximum of 5\n- **`no-deprecated-snackbar`** — fixes renamed `VSnackbarQueue` slots and replaced `VSnackbar` props\n\n### Using the recommended-v4 preset\n\nEnable all v4 migration rules at once:\n\n```js\n// eslint.config.js\nimport vue from 'eslint-plugin-vue'\nimport vuetify from 'eslint-plugin-vuetify'\n\nexport default [\n  ...vue.configs['flat/base'],\n  ...vuetify.configs['flat/recommended-v4'],\n]\n```\n\n### Selecting individual rules\n\nYou can also enable rules selectively instead of using the preset:\n\n```js\n// eslint.config.js\nimport vue from 'eslint-plugin-vue'\nimport vuetify from 'eslint-plugin-vuetify'\n\nexport default [\n  ...vue.configs['flat/base'],\n  ...vuetify.configs['flat/base'],\n  {\n    rules: {\n      'vuetify/no-deprecated-typography': 'error',\n      'vuetify/no-legacy-grid-props': 'error',\n      'vuetify/no-elevation-overflow': 'error',\n      'vuetify/no-deprecated-snackbar': 'error',\n    }\n  }\n]\n```\n\n## 💿 Install\n\nYou should have [`eslint`](https://eslint.org/docs/latest/use/getting-started) and [`eslint-plugin-vue`](https://eslint.vuejs.org/user-guide/#installation) set up first.\n\n```bash\nyarn add eslint-plugin-vuetify -D\n# OR\nnpm install eslint-plugin-vuetify --save-dev\n```\n\n```js\n// eslint.config.js\nimport vue from 'eslint-plugin-vue'\nimport vuetify from 'eslint-plugin-vuetify'\n\nexport default [\n  ...vue.configs['flat/base'],\n  ...vuetify.configs['flat/base'],\n]\n```\n\nESLint 8 can alternatively use the older configuration format:\n\n```js\n// .eslintrc.js\nmodule.exports = {\n  extends: [\n    'plugin:vue/base',\n    'plugin:vuetify/base'\n  ]\n}\n```\n\nThis plugin supports ESLint 8, 9, and 10. ESLint 10 only supports the flat config format (use `configs['flat/base']` or `configs['flat/recommended']`).\n\n**NOTE** This plugin does not affect _**pug**_ templates due to [a limitation in vue-eslint-parser](https://github.com/vuejs/vue-eslint-parser/issues/29). I suggest converting your pug templates to HTML with [pug-to-html](https://github.com/leo-buneev/pug-to-html) in order to use this plugin.\n\n\n## Rules\n\n### Deprecations\n\nThese rules will help you avoid deprecated components, props, and classes. They are included in the `base` preset.\n\n- Prevent the use of components that have been removed from Vuetify ([`no-deprecated-components`])\n- Prevent the use of props that have been removed from Vuetify ([`no-deprecated-props`])\n- Prevent the use of events that have been removed from Vuetify ([`no-deprecated-events`])\n- Prevent the use of classes that have been removed from Vuetify ([`no-deprecated-classes`])\n- Prevent the use of the old theme class syntax ([`no-deprecated-colors`])\n- Prevent the use of slots that have been removed from Vuetify ([`no-deprecated-slots`])\n- Prevent the use of deprecated import paths ([`no-deprecated-imports`])\n\nAdditional rule (not included in presets):\n\n- Ensure icon buttons have a variant defined ([`icon-button-variant`])\n\n### Grid system\n\nThese rules are designed to help migrate to the new grid system in Vuetify v3. They are included in the `recommended` preset.\n\n- Warn about unknown attributes not being converted to classes on new grid components ([`grid-unknown-attributes`])\n\n### Vuetify 4\n\nThese rules help migrate from Vuetify v3 to v4. They are included in the `recommended-v4` preset.\n\n- Disallow deprecated MD2 typography classes ([`no-deprecated-typography`])\n- Prevent the use of removed grid props ([`no-legacy-grid-props`])\n- Disallow elevation classes above the MD3 maximum ([`no-elevation-overflow`])\n- Disallow deprecated props and slots on snackbar components ([`no-deprecated-snackbar`])\n\n### Custom deprecations\n\nUser-configurable rules for deprecating components, props, events, and slots - helpful to enforce standardization.\n\n- Disallow usage of specified components, with optional replacements ([`custom-deprecated-components`])\n- Disallow usage of specified component props ([`custom-deprecated-props`])\n- Disallow usage of specified component events ([`custom-deprecated-events`])\n- Disallow usage of specified component slots ([`custom-deprecated-slots`])\n\n[`grid-unknown-attributes`]: ./docs/rules/grid-unknown-attributes.md\n[`no-deprecated-components`]: ./docs/rules/no-deprecated-components.md\n[`no-deprecated-props`]: ./docs/rules/no-deprecated-props.md\n[`no-deprecated-events`]: ./docs/rules/no-deprecated-events.md\n[`no-deprecated-classes`]: ./docs/rules/no-deprecated-classes.md\n[`no-deprecated-colors`]: ./docs/rules/no-deprecated-colors.md\n[`no-deprecated-slots`]: ./docs/rules/no-deprecated-slots.md\n[`no-deprecated-imports`]: ./docs/rules/no-deprecated-imports.md\n[`icon-button-variant`]: ./docs/rules/icon-button-variant.md\n[`custom-deprecated-components`]: ./docs/rules/custom-deprecated-components.md\n[`custom-deprecated-props`]: ./docs/rules/custom-deprecated-props.md\n[`custom-deprecated-events`]: ./docs/rules/custom-deprecated-events.md\n[`custom-deprecated-slots`]: ./docs/rules/custom-deprecated-slots.md\n[`no-deprecated-typography`]: ./docs/rules/no-deprecated-typography.md\n[`no-legacy-grid-props`]: ./docs/rules/no-legacy-grid-props.md\n[`no-elevation-overflow`]: ./docs/rules/no-elevation-overflow.md\n\n\n## 💪 Supporting Vuetify\n\u003cp\u003eVuetify is an open source MIT project that has been made possible due to the generous contributions by \u003ca href=\"https://github.com/vuetifyjs/vuetify/blob/dev/BACKERS.md\"\u003ecommunity backers\u003c/a\u003e. If you are interested in supporting this project, please consider:\u003c/p\u003e\n\n\u003cul\u003e\n  \u003cli\u003e\n    \u003ca href=\"https://github.com/sponsors/kaelwd\"\u003eBecoming a sponsor on Github\u003c/a\u003e\n    \u003cstrong\u003e\u003csmall\u003e(supports Kael)\u003c/small\u003e\u003c/strong\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003ca href=\"https://opencollective.com/vuetify\"\u003eBecoming a backer on OpenCollective\u003c/a\u003e\n    \u003cstrong\u003e\u003csmall\u003e(supports the Dev team)\u003c/small\u003e\u003c/strong\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003ca href=\"https://tidelift.com/subscription/npm/vuetify?utm_source=vuetify\u0026utm_medium=referral\u0026utm_campaign=readme\"\u003eBecome a subscriber on Tidelift\u003c/a\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003ca href=\"https://paypal.me/vuetify\"\u003eMake a one-time payment with Paypal\u003c/a\u003e\n  \u003c/li\u003e\n  \u003cli\u003e\n    \u003ca href=\"https://vuetifyjs.com/getting-started/consulting-and-support?ref=github\"\u003eBook time with John\u003c/a\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n\n### 📑 License\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright (c) 2016-present Vuetify LLC\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvuetifyjs%2Feslint-plugin-vuetify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvuetifyjs%2Feslint-plugin-vuetify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvuetifyjs%2Feslint-plugin-vuetify/lists"}