eslint-config-typescript for Vue
See @typescript-eslint/eslint-plugin for available rules.
This config is specifically designed to be used by @vue/cli
& create-vue
setups and is not meant for outside use (it can be used but some adaptations on the user side might be needed - for details see the config file).
A part of its design is that this config may implicitly depend on other parts of @vue/cli
/create-vue
setups, such as eslint-plugin-vue
being extended in the same resulting config.
In order to work around a known limitation in ESLint, we recommend you to use this package alongside @rushstack/eslint-patch
, so that you don't have to install too many dependencies:
npm add --dev @vue/eslint-config-typescript @rushstack/eslint-patch
This package comes with 2 rulesets.
This ruleset is the base configuration for Vue-TypeScript projects. Besides setting the parser and plugin options, it also turns off several conflicting rules in the eslint:recommended
ruleset. So when used alongside other sharable configs, this config should be placed at the end of the extends
array.
An example .eslintrc.cjs
:
/* eslint-env node */ require("@rushstack/eslint-patch/modern-module-resolution") module.exports = { extends: [ 'eslint:recommended', 'plugin:vue/vue3-essential', '@vue/eslint-config-typescript' ] }
This is extended from the @typescript-eslint/recommended
ruleset, which is an opinionated ruleset. See the original documentation for more information.
Some of its rules, however, might conflict with prettier
. So when used alongside other sharable configs, this config should be placed after all other configs except for the one from @vue/eslint-config-prettier
or eslint-plugin-prettier
in the extends
array.
An example .eslintrc.cjs
:
/* eslint-env node */ require("@rushstack/eslint-patch/modern-module-resolution") module.exports = { extends: [ 'plugin:vue/vue3-essential', '@vue/eslint-config-typescript/recommended', '@vue/eslint-config-prettier' ] }
Work-In-Progress.
If you are following the standard
or airbnb
style guides, don't manually extend from this package. Please use @vue/eslint-config-standard-with-typescript
or @vue/eslint-config-airbnb-with-typescript
instead.