UNPKG

bkui-cli-template-webpack4-saas

Version:

bkui-cli-template-webpack4-saas

479 lines (379 loc) 21.2 kB
/** * @file eslint config * @author <%- author %> */ module.exports = { root: true, parserOptions: { parser: 'babel-eslint', sourceType: 'module' }, env: { browser: true }, extends: [ 'plugin:vue/recommended', 'standard' ], // required to lint *.vue files plugins: [ 'vue' ], globals: { // value 为 true 允许被重写,为 false 不允许被重写 NODE_ENV: false, LOCAL_DEV_URL: false, LOCAL_DEV_PORT: false, AJAX_URL_PREFIX: false, AJAX_MOCK_PARAM: false, USER_INFO_URL: false }, // add your custom rules hered rules: { // https://eslint.org/docs/rules/brace-style 'brace-style': ['error', '1tbs', { 'allowSingleLine': false }], // https://eslint.org/docs/rules/camelcase 'camelcase': ['error', { 'properties': 'never', 'ignoreDestructuring': true }], // 缩进使用 4 个空格,并且 switch 语句中的 Case 需要缩进 // https://eslint.org/docs/rules/indent 'indent': ['error', 4, { 'SwitchCase': 1, 'flatTernaryExpressions': true }], // 数组的括号内的前后禁止有空格 // https://eslint.org/docs/rules/array-bracket-spacing 'array-bracket-spacing': ['error', 'never'], // https://eslint.org/docs/rules/operator-linebreak 'operator-linebreak': ['error', 'before'], // 在开发阶段打开调试 // https://eslint.org/docs/rules/no-debugger 'no-debugger': 'off', // 只有一个参数时,箭头函数体可以省略圆括号 // https://eslint.org/docs/rules/arrow-parens 'arrow-parens': 'off', // 禁止空语句(可在空语句写注释避免),允许空的 catch 语句 // https://eslint.org/docs/rules/no-empty 'no-empty': ['error', { 'allowEmptyCatch': true }], // 禁止在语句末尾使用分号 // https://eslint.org/docs/rules/semi 'semi': ['error', 'never'], // 禁用不必要的分号 // https://eslint.org/docs/rules/no-extra-semi 'no-extra-semi': 'error', // generator 的 * 前面禁止有空格,后面必须有空格 // https://eslint.org/docs/rules/generator-star-spacing 'generator-star-spacing': [ 'error', { before: false, after: true } ], // 函数圆括号之前有一个空格 // https://eslint.org/docs/rules/space-before-function-paren 'space-before-function-paren': ['error', { 'anonymous': 'always', // 匿名函数表达式 'named': 'always', // 命名的函数表达式 'asyncArrow': 'always' // 异步的箭头函数表达式 }], // 禁止行尾有空格 // https://eslint.org/docs/rules/no-trailing-spaces 'no-trailing-spaces': ['error', { 'skipBlankLines': true // 允许在空行使用空白符 }], // 注释的斜线或 * 后必须有空格 // https://eslint.org/docs/rules/spaced-comment 'spaced-comment': ['error', 'always', { 'line': { 'markers': ['*package', '!', '/', ',', '='] }, 'block': { // 前后空格是否平衡 'balanced': false, 'markers': ['*package', '!', ',', ':', '::', 'flow-include'], 'exceptions': ['*'] } }], // https://eslint.org/docs/rules/no-template-curly-in-string // 禁止在字符串中使用字符串模板。不限制 'no-template-curly-in-string': 'off', // https://eslint.org/docs/rules/no-useless-escape // 禁止出现没必要的转义。不限制 'no-useless-escape': 'off', // https://eslint.org/docs/rules/no-var // 禁止使用 var 'no-var': 'error', // https://eslint.org/docs/rules/prefer-const // 如果一个变量不会被重新赋值,必须使用 `const` 进行声明。 'prefer-const': 'error', // 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': false, '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': 'off', // 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: ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', 'deactivated', 'beforeDestroy', 'destroyed'] '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' }, overrides: [ { files: ['*.vue'], rules: { indent: 'off' } } ] }