vue-cli3 老项目的eslint配置

vue-cli3 老项目的eslint配置:

这个是在已经建了项目的基础上再配置。配置了好久,所以以后千万千万要在一开始的配置好,不然一堆Bug

我看着配置的的链接,嘻嘻嘻,挺全的 点击开始-eslint配置

## 原链接有点问题,setting.jss需要改一下代码

// 重新设定tabsize
"editor.tabSize": 2,
// 每次保存的时候将代码按eslint格式进行修复
// "eslint.autoFixOnSave": true,
// 此配置已作废,使用editor.codeActionsOnSave,里面配置source.fixAll.eslint 属性把"eslint.autoFixOnSave": true 改成:
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true
},
// 添加 vue 支持
"eslint.validate": [
  "javascript",
  "javascriptreact",
  "html",
  "vue"
],
// 每次保存的时候自动格式化(建议关掉,用eslint来修复)
"editor.formatOnSave": false
}

部分配置项的知识点:

// 开启验证
 lintOnSave : true,

lintOnSave 作用:设置是否在开发环境下每次保存代码时都启用 eslint验证。

valuefalse:关闭每次保存都进行检测
true:开启每次保存都进行检测,效果与warning一样
‘error’:开启每次保存都进行检测,lint 错误将显示到浏览器页面上,且编译失败。
‘default’:同’error’
‘warning’:开启每次保存都进行检测,lint 错误将显示到控制台命令行,而且编译并不会失败。

遇到的问题:

**问题一:**warning: Expected 1 line break before closing tag (), but 2 line breaks found (vue/multiline-html-element-content-newline)

**解决:**在.eslintrc.js文件中添加以下代码即可

'vue/singleline-html-element-content-newline': 'off',
'vue/multiline-html-element-content-newline': 'off',

个人配置建议:

由于eslint的规则很多,我选择了其中一些个人认为必要的,以下是配置

.eslintrc.js

module.exports = {
    // 默认情况下,ESLint会在所有父级组件中寻找配置文件,一直到根目录。ESLint一旦发现配置文件中有   "root": true,它就会停止在父级目录中寻找。
    root: true,
    parserOptions: {
      // 对Babel解析器的包装使其与 ESLint 兼容。
      parser: 'babel-eslint',
      // 代码是 ECMAScript 模块
      sourceType: 'module'
    },
    env: {
       // 预定义的全局变量,这里是浏览器环境
      browser: true,
      node: true,
      es6: true,
    },
    // 扩展风格
    extends: ['plugin:vue/recommended', 'eslint:recommended'],
    // 规则的细节请到ESLint官方网站查看http://eslint.org/docs/rules/
    rules: {
      "vue/max-attributes-per-line": [2, {
        "singleline": 10,
        "multiline": {
          "max": 1,
          "allowFirstLine": false
        }
      }],
      "vue/name-property-casing": ["error", "PascalCase"],
      // 禁止或强制在单行代码块中使用空格
      'block-spacing': [2, 'always'],
      // 强制使用一致的缩进 第二个参数为 "tab" 时,会使用tab
      'brace-style': [2, '1tbs', {
        'allowSingleLine': true
      }],
      //  数组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号
      'comma-dangle': [2, 'never'],
      // 控制逗号前后的空格
      'comma-spacing': [2, {
        'before': false,
        'after': true
      }],
      'comma-style': [2, 'last'],
    
      // 强制在对象字面量的属性中键和值之间使用一致的间距
      'key-spacing': [2, {
        'beforeColon': false,
        'afterColon': true
      }],
      // 强制在关键字前后使用一致的空格
      'keyword-spacing': [2, {
        'before': true,
        'after': true
      }],
      // 要求构造函数首字母大写
      'new-cap': [2, {
        'newIsCap': true,
        'capIsNew': false
      }],
      // 禁止不必要的括号 //(a * b) + c;//报错
      'no-extra-parens': [2, 'functions'],
      // 禁止在字符串和注释之外不规则的空白
      'no-irregular-whitespace': 2,
      // 禁用 __iterator__ 属性
      'no-iterator': 2,
      // 不允许标签与变量同名
      'no-label-var': 2,
      // 禁用不必要的嵌套块
      'no-lone-blocks': 2,
      //不允许空格和 tab 混合缩进
      'no-mixed-spaces-and-tabs': 2,
      // 禁止使用多个空格
      'no-multi-spaces': 2,
      // 禁止使用多行字符串,在 JavaScript 中,可以在新行之前使用斜线创建多行字符串
      'no-multi-str': 2,
      // 不允许多个空行
      'no-multiple-empty-lines': [2, {
        'max': 1
      }],
      // 禁用行尾空格
      'no-trailing-spaces': 2,
      // 强制操作符使用一致的换行符
      'operator-linebreak': [2, 'after', {
        'overrides': {
          '?': 'before',
          ':': 'before'
        }
      }],
      // 强制在 function的左括号之前使用一致的空格
      'space-before-function-paren': [2, 'never'],
       // 要求或禁止使用分号而不是 ASI(这个才是控制行尾部分号的,)
       'semi': [2, 'never'],
       // 强制分号之前和之后使用一致的空格
       'semi-spacing': [2, {
         'before': false,
         'after': true
       }],
        // 强制在块之前使用一致的空格
        'space-before-blocks': [2, 'always'],
        // 要求操作符周围有空格
        'space-infix-ops': 2,
         // 指定数组的元素之间要以空格隔开(, 后面), never参数:[ 之前和 ] 之后不能带空格,always参数:[ 之前和 ] 之后必须带空格
         'array-bracket-spacing': [2, 'never'],
          // 要求或禁止模板字符串中的嵌入表达式周围空格的使用
        'template-curly-spacing': [2, 'never'],
      // 强制在圆括号内使用一致的空格
      // 'space-in-parens': [2, 'never'],
      
      // 强制在注释中 // 或 /* 使用一致的空格
      'spaced-comment': [2, 'always', {
        'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
      }],
      // 强制在花括号中使用一致的空格
      'object-curly-spacing': [2, 'always', {
        objectsInObjects: false
      }],
      // 标签</>前后不换行
      'vue/singleline-html-element-content-newline': 'off',
      'vue/multiline-html-element-content-newline': 'off',
     // self-closing问题
     "vue/html-self-closing": ["error",{
      "html": {
        "void": "never",
        "normal": "any",
        "component": "any"
      },
      "svg": "always",
      "math": "always"
    }],
    // 问题
    'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
    'generator-star-spacing': 'off',
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值