vscode配置setting和eslintrc.js

司寇山
2023-12-01

eslintrc.js


module.exports = {
  root: true,
  // 此项指定环境的全局变量
  env: {
    browser: true,
    node: true,
    es6: true,
  },
  // 此项是用来指定javaScript语言类型和风格,sourceType用来指定js导入的方式,默认是script,此处设置为module,指某块导入方式
  parserOptions: {
    parser: 'babel-eslint',
    sourceType: 'module'
  },
  extends: [
    'plugin:vue/essential'
  ],
  plugins: [
    'vue'
  ],
  'settings': {
      'import/resolver': {
          'webpack': {
              'config': 'build/webpack.base.conf.js'
          }
      }
  },
  /** vue文件禁用indent规则 */
  overrides:[
    {
      'files':['*.vue'],
      'rules':{
        'indent':'off',
        'vue/no-use-v-if-with-v-for': 'off',
        'vue/no-unused-components': 'off'
      }
    }
  ],
  rules: {
    /** 禁用 console */
    'no-console': 'off',
    /** 禁用 debugger */
    'no-debugger': 'off',
    /** 要求使用 === 和 !== */
    'eqeqeq': ['error', "always", {"null": "ignore"}],
    /** 要求或禁止使用分号代替 ASI,即禁用行位使用分号 */
    'semi': ['error', 'never'],
    /** 强制分号之前和之后使用一致的空格 */
    'semi-spacing': ['error', {'before': false,'after': true}],
    /** 大括号风格要求,用来描述大括号相对控制语句和代码块的位置 */
    'brace-style': ['error', '1tbs', {'allowSingleLine': true}],
    /** 强制在花括号中使用一致的空格 */
    'object-curly-spacing': ['error', 'always'],
    /** 禁止或强制在括号内使用空格 */
    'array-bracket-spacing': ['error', 'never'],
    /** 要求或禁止语句块之前的空格 */
    'space-before-blocks': ['error', 'always'],
    /** 要求或禁止函数圆括号之前有一个空格 */
    'space-before-function-paren': ['error', 'never'],
    /** 禁止或强制圆括号内的空格 */
    'space-in-parens': ['error', 'never'],
    /** 确保中缀运算符周围有空格 */
    'space-infix-ops': ['error', {'int32Hint': false}],
    /** 要求或禁止在一元操作符之前或之后存在空格 */
    'space-unary-ops': ['error', {'words': true,'nonwords': false}],
    /** 要求或禁止在注释前有空白 */
    'spaced-comment': ['error', 'always', {'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']}],
    /** 强制模板字符串中空格的使用 */
    'template-curly-spacing': ['error', 'never'],
    /** 要求调用 isNaN()检查 NaN */
    'use-isnan': 'error',
    /** 强制 typeof 表达式与有效的字符串进行比较  */
    'valid-typeof': 'error',
    /** 需要把立即执行的函数包裹起来 */
    'wrap-iife': ['error', 'any'],
    /** 强制在 yield* 表达式中 * 周围使用空格 */
    'yield-star-spacing': ['error', 'after'],
    /** 强制 generator 函数中 * 号周围有空格 */
    'generator-star-spacing': ['error', 'after'],
    /** 要求或禁止块内填充 */
    'padded-blocks': ['error', 'never'],
    /** 强制操作符使用一致的换行符风格 */
    'operator-linebreak': ['error', 'after', {'overrides': {'?': 'before',':': 'before'}}],
    /** 强制函数中的变量在一起声明或分开声明 */
    'one-var': ['error', 'never'],
    /** 要求构造函数首字母大写 */
    'new-cap': ['error', {'newIsCap': true,'capIsNew': false}],
    /** 要求调用无参构造函数时带括号 */
    'new-parens': 'error',
    /** 强制关键字周围空格的一致性 */
    'keyword-spacing': ['error', {'before': true,'after': true}],
    /** 强制在对象字面量的键和值之间使用一致的空格 */
    'key-spacing': ['error', {'beforeColon': false,'afterColon': true}],
    /** 强制在 JSX 属性中使用一致的单引号或双引号 */
    'jsx-quotes': ['error', 'prefer-single'],
    /** 强制使用一致的缩进 */
    'indent': ['error', 2, {'SwitchCase': 1}],
    /** 强制回调错误处理 */
    // 'handle-callback-err': ['error', '^(err|error)$'],
    /** 要求或禁止文件末尾保留一行空行 */
    'eol-last': ['error', 'always'],
    /** 强制在点号之前或之后换行 */
    'dot-location': ['error', 'property'],
    /** 要求遵循大括号约定 */
    'curly': ['error', 'multi-line'],
    /** 验证构造函数中 super() 的调用 */
    'constructor-super': 'error',
    /** 逗号风格 (comma-style) */
    'comma-style': ['error', 'last'],
    /** 强制在逗号周围使用空格 */
    'comma-spacing': ['error', {'before': false,'after': true}],
    /** 要求或禁止使用拖尾逗号 */
    'comma-dangle': ['error', 'never'],
    /** 禁止或强制在代码块中开括号前和闭括号后有空格  */
    'block-spacing': ['error', 'always'],
    /** 要求箭头函数的箭头之前或之后有空格 */
    'arrow-spacing': ['error', {'before': true,'after': true}],
    /** 要求或禁止在函数标识符和其调用之间有空格 */
    'func-call-spacing': ['error', 'never'],
    /****************************************** no 配置 ********************************************/
    /** 禁止使用 Array 构造函数 */
    'no-array-constructor': 'error',
    /** 禁用 arguments.caller 或 arguments.callee */
    'no-caller': 'error',
    /** 禁止修改类声明的变量 */
    'no-class-assign': 'error',
    /** 禁止条件表达式中出现赋值操作符 */
    'no-cond-assign': ['error','always'],
    /** 禁止修改 const 声明的变量 */
    'no-const-assign': 'error',
    /** 禁止在正则表达式中使用控制字符 */
    'no-control-regex': 'error',
    /** 禁止删除变量 */
    'no-delete-var': 'error',
    /** 禁止 function 定义中出现重名参数 */
    'no-dupe-args': 'error',
    /** 禁止类成员中出现重复的名称 */
    'no-dupe-class-members': 'error',
    /** 禁止对象字面量中出现重复的 key */
    'no-dupe-keys': 'error',
    /** 禁止出现重复的 case 标签 */
    'no-duplicate-case': 'error',
    /** 禁止在正则表达式中出现空字符集 */
    'no-empty-character-class': 'error',
    /** 禁止使用空解构模式 */
    'no-empty-pattern': 'error',
    /** 禁止对 catch 子句的参数重新赋值 */
    'no-ex-assign': 'error',
    /** 禁止扩展原生对象 */
    'no-extend-native': 'error',
    /** 禁止不必要的函数绑定 */
    'no-extra-bind': 'error',
    /** 禁止不必要的布尔类型转换 */
    'no-extra-boolean-cast': 'error',
    /** 禁止冗余的括号 */
    'no-extra-parens': ['error', 'functions'],
    /** 禁止 case 语句落空 */
    'no-fallthrough': 'error',
    /** 禁止浮点小数 */
    'no-floating-decimal': 'error',
    /** 禁止对 function 声明重新赋值  */
    'no-func-assign': 'error',
    /** 禁止在嵌套的语句块中出现变量或 function 声明 */
    'no-inner-declarations': ['error', 'functions'],
    /** 禁止在 RegExp 构造函数中出现无效的正则表达式 */
    'no-invalid-regexp': 'error',
    /** 禁止不规则的空白 */
    'no-irregular-whitespace': 'error',
    /** 禁用迭代器 */
    'no-iterator': 'error',
    /** 禁用与变量同名的标签 */
    'no-label-var': 'error',
    /** 禁用标签语句 */
    'no-labels': ['error', {'allowLoop': false,'allowSwitch': false}],
    /** 禁用不必要的嵌套块 */
    'no-lone-blocks': 'error',
    /** 禁止使用 空格 和 tab 混合缩进 */
    'no-mixed-spaces-and-tabs': 'error',
    /** 禁止出现多个空格 */
    'no-multi-spaces': 'error',
    /** 禁止多行字符串 */
    'no-multi-str': 'error',
    /** 不允许多个空行  */
    'no-multiple-empty-lines': ['error', {'max': 1}],
    /** 禁止对原生对象或只读的全局对象进行赋值 */
    'no-global-assign': 'error',
    /** 禁止对关系运算符的左操作数使用否定操作符 */
    'no-unsafe-negation': 'error',
    /** 禁止使用 Object 构造函数 */
    'no-new-object': 'error',
    /** 不允许 new require */
    'no-new-require': 'error',
    /** 禁止 Symbolnew 操作符和 new 一起使用 */
    'no-new-symbol': 'error',
    /** 禁止原始包装实例 */
    'no-new-wrappers': 'error',
    /** 禁止将全局对象当作函数进行调用 */
    'no-obj-calls': 'error',
    /** 禁用八进制字面量 */
    'no-octal': 'error',
    /** 禁止在字符串字面量中使用八进制转义序列 */
    'no-octal-escape': 'error',
    /** 当使用 _dirname 和 _filename 时不允许字符串拼接 */
    'no-path-concat': 'error',
    /** 禁用__proto__ */
    'no-proto': 'error',
    /** 禁止重新声明变量 */
    'no-redeclare': 'error',
    /** 禁止正则表达式字面量中出现多个空格 */
    'no-regex-spaces': 'error',
    /** 禁止在返回语句中赋值 */
    'no-return-assign': ['error', 'except-parens'],
    /** 禁止自身赋值 */
    'no-self-assign': 'error',
    /** 禁止自身比较 */
    'no-self-compare': 'error',
    /** 不允许使用逗号操作符 */
    'no-sequences': 'error',
    /** 关键字不能被遮蔽 */
    'no-shadow-restricted-names': 'error',
    /** 禁用稀疏数组 */
    'no-sparse-arrays': 'error',
    /** 在构造函数中禁止在调用super()之前使用this或super */
    'no-this-before-super': 'error',
    /** 限制可以被抛出的异常 */
    'no-throw-literal': 'error',
    /** 禁用行尾空格 */
    'no-trailing-spaces': 'error',
    /** 禁用未声明的变量 */
    'no-undef': 'error',
    /** 不允许初始化变量值为 undefined */
    'no-undef-init': 'error',
    /** 禁止使用令人困惑的多行表达式 */
    'no-unexpected-multiline': 'error',
    /** 禁用一成不变的循环条件 */
    'no-unmodified-loop-condition': 'error',
    /** 禁止可以表达为更简单结构的三元操作符 */
    'no-unneeded-ternary': ['error', {'defaultAssignment': false}],
    /** 禁止在 return、throw、continue 和 break 语句之后出现不可达代码 */
    'no-unreachable': 'error',
    /** 禁止在 finally 语句块中出现控制流语句 */
    'no-unsafe-finally': 'error',
    /** 禁止未使用过的变量 */
    // 'no-unused-vars': ['error', {'vars': 'local','args': 'none'}],
    /** 禁用不必要的 .call() 和 .apply() */
    'no-useless-call': 'error',
    /** 禁止在对象中使用不必要的计算属性 */
    'no-useless-computed-key': 'error',
    /** 禁用不必要的构造函数 */
    'no-useless-constructor': 'error',
    /** 禁止属性前有空白 */
    'no-whitespace-before-property': 'error',
    /** 禁用 with 语句 */
    'no-with': 'error'
  }
}

setting.json

{
  "workbench.colorTheme": "Default Light+",
  "workbench.editor.enablePreviewFromQuickOpen": true,
  "workbench.editor.enablePreviewFromCodeNavigation": true,
  "javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
  // ----------------
  // 括号线着色
  "editor.guides.bracketPairs": true,
  // 编辑器 括号着色
  "editor.bracketPairColorization.enabled": true,
  // 通过tab 自动补全联想
  "editor.suggest.preview": true,
  // 编译器字体大小
  "editor.fontSize": 16,
  // vscode默认启用了根据文件类型自动设置tabsize的选项
  "editor.detectIndentation": false,
  // 重新设定tabsize
  "editor.tabSize": 2,
  // #每次保存的时候自动格式化 
  "editor.formatOnSave": false,
  //  #让函数(名)和后面的括号之间加个空格
  "javascript.format.insertSpaceBeforeFunctionParenthesis": false,
  // #每次保存的时候将代码按eslint格式进行修复
  //"eslint.autoFixOnSave": true,以弃用   改成下面的"editor.codeActionsOnSave"
  "editor.codeActionsOnSave": {
    // #每次保存的时候将代码按eslint格式进行修复
    "source.fixAll.eslint": true,
    "eslint.autoFixOnSave": true,
  },
  // 启用eslint作为格式化程序
  "eslint.format.enable": true,
  // 添加支持格式
  //autoFix默认开启,只需输入字符串数组即可
  "eslint.validate": [
    "javascript",
    "vue",
    "html"
  ],
  // v-for中是否必须使用key
  "vetur.validation.template": false,
  // #这个按用户自身习惯选择 , html 使用 beautify
  "vetur.format.defaultFormatter.html": "js-beautify-html",
  // #让vue中的js按编辑器自带的ts格式进行格式化 
  "vetur.format.defaultFormatter.js": "vscode-typescript",
  // 设置下面这组会执行prettier格式
  // "vetur.format.defaultFormatter.html": "prettyhtml",
  // "vetur.format.defaultFormatter.js": "prettier",
  "vetur.format.defaultFormatterOptions": {
    // "wrap_attributes": "force-aligned",
    "js-beautify-html": {
      // - auto: 仅在超出行长度时才对属性进行换行。
      // - force: 对除第一个属性外的其他每个属性进行换行。
      // - force-aligned: 对除第一个属性外的其他每个属性进行换行,并保持对齐。
      // - force-expand-multiline: 对每个属性进行换行。
      // - aligned-multiple: 当超出折行长度时,将属性进行垂直对齐。
      "wrap_attributes": "auto",
      // #vue组件中html代码格式化样式,可选
      // 折行长度
      "wrap_line_length": 200,
      // "end_with_newline": false,
      // "semi": true,
      "singleQuote": false
    },
    "prettier": {
      //设置分号
      "semi": false,
      //双引号变成单引号
      "singleQuote": false,
      //禁止随时添加逗号,这个很重要。找了好久
      "trailingComma": "none"
    }
  },
  // "explorer.confirmDelete": false,
  "diffEditor.ignoreTrimWhitespace": true,
  // "workbench.sideBar.location": "left",
  // "files.autoGuessEncoding": true,
  "editor.formatOnType": true,
  // "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  // "editor.suggest.snippetsPreventQuickSuggestions": false,
  // path-intellisense 自动路径补全
  "path-intellisense.mappings": {
    "@": "${workspaceRoot}/src"
  },
  "editor.quickSuggestions": {
    "strings": true
  },
  // svn 地址
  "svn.path": "D://svn//bin//svn.exe",
  // vue中js的格式化方式
  "[javascript]": {
    "editor.defaultFormatter": "Wscats.eno"
  },
  "[vue]": {
    "editor.defaultFormatter": "octref.vetur"
  },
  "explorer.confirmDelete": false
}
  
 类似资料: