UNPKG

@blueking/eslint-config

Version:

蓝鲸前端代码 ESLint 规则

347 lines (266 loc) 15.1 kB
module.exports = { // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/array-bracket-spacing.md 'vue/array-bracket-spacing': ['error', 'never'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/arrow-spacing.md 'vue/arrow-spacing': ['error', { before: true, after: true }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/attribute-hyphenation.md 'vue/attribute-hyphenation': ['error', 'always'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/attributes-order.md // 属性顺序,不限制 'vue/attributes-order': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/block-spacing.md 'vue/block-spacing': ['error', 'always'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/brace-style.md 'vue/brace-style': ['error', '1tbs', { allowSingleLine: false }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/camelcase.md // 后端数据字段经常不是驼峰,所以不限制 properties,也不限制解构 'vue/camelcase': ['error', { properties: 'never', ignoreDestructuring: true }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comma-dangle.md // 禁止使用拖尾逗号,如 {demo: 'test',} 'vue/comma-dangle': ['error', 'never'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/comment-directive.md // vue 文件 template 中允许 eslint-disable eslint-enable eslint-disable-line eslint-disable-next-line // 行内注释启用/禁用某些规则,配置为 1 即允许 'vue/comment-directive': 1, // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/component-name-in-template-casing.md // 组件 html 标签的形式,连字符形式,所有 html 标签均会检测,如引入第三方不可避免,可通过 ignores 配置,支持正则,不限制 'vue/component-name-in-template-casing': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/dot-location.md // 等待 https://github.com/vuejs/eslint-plugin-vue/pull/794 合入 // 'vue/dot-location': ['error', 'property'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/eqeqeq.md 'vue/eqeqeq': ['error', 'always', { null: 'ignore' }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-closing-bracket-newline.md // 单行写法不需要换行,多行需要,不限制 'vue/html-closing-bracket-newline': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-closing-bracket-spacing.md 'vue/html-closing-bracket-spacing': ['error', { startTag: 'never', endTag: 'never', selfClosingTag: 'always' }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-end-tags.md 'vue/html-end-tags': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-indent.md 'vue/html-indent': ['error', 4, { attribute: 1, baseIndent: 1, closeBracket: 0, alignAttributesVertically: true, ignores: [] }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-quotes.md 'vue/html-quotes': ['error', 'double'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/html-self-closing.md // html tag 是否自闭和,不限制 'vue/html-self-closing': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/jsx-uses-vars.md // 当变量在 `JSX` 中被使用了,那么 eslint 就不会报出 `no-unused-vars` 的错误。需要开启 eslint no-unused-vars 规则才适用 'vue/jsx-uses-vars': 1, // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/key-spacing.md 'vue/key-spacing': ['error', { beforeColon: false, afterColon: true }], // 关键字周围空格一致性,在关键字前后保留空格,如 if () else {} // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/keyword-spacing.md // 等待 https://github.com/vuejs/eslint-plugin-vue/pull/795 合入 // 'vue/keyword-spacing': ['error', {'before': true, 'after': true}], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/match-component-file-name.md // 组件名称属性与其文件名匹配,不限制 'vue/match-component-file-name': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/max-attributes-per-line.md // 每行属性的最大个数,不限制 'vue/max-attributes-per-line': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/multiline-html-element-content-newline.md // 在多行元素的内容前后需要换行符,不限制 'vue/multiline-html-element-content-newline': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/mustache-interpolation-spacing.md // template 中 {{var}},不限制 'vue/mustache-interpolation-spacing': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/name-property-casing.md 'vue/name-property-casing': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-async-in-computed-properties.md 'vue/no-async-in-computed-properties': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-boolean-default.md 'vue/no-boolean-default': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-confusing-v-for-v-if.md 'vue/no-confusing-v-for-v-if': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-dupe-keys.md // 二级属性名禁止重复 'vue/no-dupe-keys': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-duplicate-attributes.md // 禁止 html 元素中出现重复的属性 'vue/no-duplicate-attributes': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-empty-pattern.md // 等待 https://github.com/vuejs/eslint-plugin-vue/pull/798 合入 // 禁止解构中出现空 {} 或 [] // 'vue/no-empty-pattern': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-multi-spaces.md // 删除 html 标签中连续多个不用于缩进的空格 'vue/no-multi-spaces': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-parsing-error.md // 禁止语法错误 'vue/no-parsing-error': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-reserved-keys.md // 禁止使用保留字 'vue/no-reserved-keys': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-restricted-syntax.md // 禁止使用特定的语法 'vue/no-restricted-syntax': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-shared-component-data.md // data 属性必须是函数 'vue/no-shared-component-data': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-side-effects-in-computed-properties.md // 禁止在计算属性对属性进行修改,不限制 'vue/no-side-effects-in-computed-properties': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-spaces-around-equal-signs-in-attribute.md 'vue/no-spaces-around-equal-signs-in-attribute': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-template-key.md // 禁止在 <template> 中使用 key 属性,不限制 'vue/no-template-key': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-template-shadow.md 'vue/no-template-shadow': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-textarea-mustache.md 'vue/no-textarea-mustache': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-unused-components.md // 禁止 components 中声明的组件在 template 中没有使用 'vue/no-unused-components': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-unused-vars.md 'vue/no-unused-vars': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-use-v-if-with-v-for.md // 禁止 v-for 和 v-if 在同一元素上使用,不限制 'vue/no-use-v-if-with-v-for': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/no-v-html.md // 禁止使用 v-html,防止 xss 'vue/no-v-html': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/object-curly-spacing.md // 对象写在一行时,大括号里需要空格 'vue/object-curly-spacing': ['error', 'always'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/order-in-components.md // 官方推荐顺序 'vue/order-in-components': ['error', { order: [ 'el', 'name', 'parent', 'functional', ['delimiters', 'comments'], ['components', 'directives', 'filters'], 'extends', 'mixins', 'inheritAttrs', 'model', ['props', 'propsData'], 'data', 'computed', 'watch', 'LIFECYCLE_HOOKS', 'methods', ['template', 'render'], 'renderError' ] }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/prop-name-casing.md // 组件 props 属性名驼峰命名 'vue/prop-name-casing': ['error', 'camelCase'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-component-is.md // <component> 元素必须要有 :is 属性 'vue/require-component-is': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-default-prop.md // props 必须要有默认值,不限制 'vue/require-default-prop': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-direct-export.md // 组件必须要直接被 export。不限制 'vue/require-direct-export': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-prop-type-constructor.md // props 的 type 必须为构造函数,不能为字符串。 'vue/require-prop-type-constructor': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-prop-types.md // props 必须要有 type。 'vue/require-prop-types': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-render-return.md // render 函数必须要有返回值 'vue/require-render-return': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-v-for-key.md // v-for 指令必须要有 key 属性 'vue/require-v-for-key': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/require-valid-default-prop.md // props 默认值必须有效。不限制 'vue/require-valid-default-prop': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/return-in-computed-property.md // 计算属性必须要有返回值 'vue/return-in-computed-property': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/script-indent.md 'vue/script-indent': ['error', 4, { baseIndent: 1, switchCase: 1 }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/singleline-html-element-content-newline.md // 单行 html 元素后面必须换行。不限制 'vue/singleline-html-element-content-newline': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/space-infix-ops.md // 二元操作符两边要有空格 'vue/space-infix-ops': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/space-unary-ops.md // new, delete, typeof, void, yield 等后面必须有空格,一元操作符 -, +, --, ++, !, !! 禁止有空格 'vue/space-unary-ops': ['error', { words: true, nonwords: false }], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/this-in-template.md // 不允许在 template 中使用 this 'vue/this-in-template': ['error', 'never'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/use-v-on-exact.md // 强制使用精确修饰词。不限制 'vue/use-v-on-exact': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/v-bind-style.md // v-bind 指令的写法。不限制 'vue/v-bind-style': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/v-on-function-call.md // 强制或禁止在 v-on 指令中不带参数的方法调用后使用括号。不限制 'vue/v-on-function-call': 'off', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/v-on-style.md // v-on 指令的写法。限制简写 'vue/v-on-style': ['error', 'shorthand'], // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-template-root.md // 根节点必须合法 'vue/valid-template-root': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-bind.md // v-bind 指令必须合法 'vue/valid-v-bind': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-cloak.md // v-cloak 指令必须合法 'vue/valid-v-cloak': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-else-if.md // v-else-if 指令必须合法 'vue/valid-v-else-if': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-else.md // v-else 指令必须合法 'vue/valid-v-else': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-for.md // valid-v-for 指令必须合法 'vue/valid-v-for': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-html.md // v-html 指令必须合法 'vue/valid-v-html': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-if.md // v-if 指令必须合法 'vue/valid-v-if': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-model.md // v-model 指令必须合法 'vue/valid-v-model': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-on.md // v-on 指令必须合法 'vue/valid-v-on': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-once.md // v-once 指令必须合法 'vue/valid-v-once': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-pre.md // v-pre 指令必须合法 'vue/valid-v-pre': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-show.md // v-show 指令必须合法 'vue/valid-v-show': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/valid-v-text.md // v-text 指令必须合法 'vue/valid-v-text': 'error', // https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/component-tags-order.md 'vue/component-tags-order': ['error', { order: ['template', 'script', 'style'] }] }