vue-cli-plugin-tea
Version:
为项目初始化提供更好的 lint 支持与更全面的目录结构
170 lines (169 loc) • 3.63 kB
JavaScript
module.exports = {
root: true,
env: {
node: true
},
<%_ if (useTypeScript) { _%>
extends: [
'plugin:vue/essential',
'plugin:vue/strongly-recommended',
'plugin:vue/recommended',
'@vue/standard',
'@vue/typescript/recommended'
],
parserOptions: {
ecmaVersion: 2020
},
<%_ } else { _%>
extends: [
'plugin:vue/essential',
'plugin:vue/strongly-recommended',
'plugin:vue/recommended',
'@vue/standard'
],
parserOptions: {
parser: 'babel-eslint'
},
<%_ } _%>
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'space-before-function-paren': [
'error',
{
anonymous: 'always',
named: 'never',
asyncArrow: 'always'
}
],
<%_ if (useTypeScript) { _%>
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/strict-boolean-expressions': 'off',
'@typescript-eslint/member-delimiter-style': [
'error',
{
multiline: {
delimiter: 'comma',
requireLast: false
},
singleline: {
requireLast: false
}
}
],
'@typescript-eslint/no-inferrable-types': 'error',
'@typescript-eslint/no-this-alias': [
'error',
{
allowDestructuring: true
}
],
'@typescript-eslint/no-unnecessary-condition': 'off',
<%_ } _%>
'vue/eqeqeq': 'error',
'vue/object-curly-spacing': 'error',
'vue/require-direct-export': 'error',
'vue/no-parsing-error': [
'error',
{
'x-invalid-end-tag': false
}
],
'vue/max-attributes-per-line': [
'error',
{
singleline: 2,
multiline: {
max: 1,
allowFirstLine: false
}
}
],
'vue/match-component-file-name': [
'error',
{
extensions: ['vue'],
shouldMatchCase: false
}
],
'vue/space-infix-ops': [
'error',
{
int32Hint: false
}
],
'vue/html-self-closing': [
'error',
{
html: {
void: 'always',
normal: 'never',
component: 'never'
},
svg: 'always',
math: 'always'
}
],
'vue/order-in-components': [
'error',
{
order: [
'el',
'name',
'parent',
'functional',
['delimiters', 'comments'],
['components', 'directives', 'filters'],
'extends',
'mixins',
'inheritAttrs',
'model',
['inject', 'provide'],
['props', 'propsData'],
'fetch',
'asyncData',
'data',
'computed',
'watch',
'LIFECYCLE_HOOKS',
'methods',
'head',
['template', 'render'],
'renderError'
]
}
]
},
overrides: [
<%_ if (useTypeScript) { _%>
{
files: ['*.js', '*.vue'],
rules: {
'@typescript-eslint/explicit-module-boundary-types': 'off',
'@typescript-eslint/no-var-requires': 'off'
}
},
{
files: ['*.ts', '*.tsx'],
rules: {
'@typescript-eslint/explicit-module-boundary-types': 'error'
}
},
{
files: ['*.config.{j,t}s'],
rules: {
'@typescript-eslint/no-var-requires': 'off'
}
},
<%_ } _%>
{
files: [
'**/__tests__/*.{j,t}s?(x)',
'**/tests/unit/**/*.spec.{j,t}s?(x)'
],
env: {
jest: true
}
}
]
}