• VSCode 代码格式化,如何解决 Vetur 与 ESLint 的冲突?


    代码格式化可以代码保持整洁,让团队拥有统一的代码风格和规范。VSCode 上有很多代码格式化的插件,如 Beautify, Prettier 等,但我推荐使用 Vetur。

    大多数同学可能只注意到 Vetur 是编辑器识别 vue 文件的必备插件,却不知道它可以用来格式化代码。你只有真的用了之后你会发现,真香。

    但使用 Vetur 格式化代码时,你可能会发现 Vetur 格式化代码的规则与 ESLint 冲突,具体表现为结尾逗号,结尾分号,函数后无空格。

     解决方案是修改 setting.json 配置(文件 => 首选项 => 设置 => 搜索setting.json),贴下个人 setting.json 配置。

    {
      "[vue]": {
        "editor.defaultFormatter": "octref.vetur"
      },
      "[javascript]": {
        "editor.defaultFormatter": "octref.vetur"
      },
      // 注意:加了下面的设置后,在函数前加空格的的配置才生效
      "vetur.format.defaultFormatter.js": "vscode-typescript",
      // 在函数名称前加一个空格
      "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
      // 保存时自动格式化代码
      "editor.formatOnSave": true,
      // 保存时自动修复 eslint 报错
      "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
      }
    }

    效果如下:

     注意,修改 setting.json 配置后重启下VSCode软件。

    期间遇到vetur缩进switch的格式与eslint不一致 需要在.eslintrc.js文件中的indent里增加{ SwitchCase: 1 }

    const isPro = process.env.NODE_ENV === "production";
    module.exports = {
      root: true,
      parserOptions: {
        parser: "babel-eslint",
        ecmaVersion: true
      },
      env: {
        browser: true,
        es6: true,
      },
      extends: ['plugin:vue/essential'],
      plugins: ["vue"],
      // "off"或者0    关闭规则关闭
      // "warn"或者1   在打开的规则作为警告(不影响退出代码)
      // "error"或者2  把规则作为一个错误(退出代码触发时为1)
      rules: {
        "vue/no-use-v-if-with-v-for": ["error", {
          "allowUsingIterationVar": true
        }],
        // 代码风格规范
        "quotes": [2, "single"], //字符串使用单引号
        "space-infix-ops": 2, // 操作符周围要有空格
        "spaced-comment": 2, //注释风格要有空格
        "comma-spacing": 2, //逗号后要有空格
        "comma-style": [2, "last"], //逗号风格,换行时在行首还是行尾
        "consistent-this": [2, "_this"], //this别名
        "curly": [2, "all"], //必须使用 if(){} 中的{}
        "brace-style": [2, "1tbs"], // 大括号和关键字在同一行
        "no-unused-vars": [0, { "vars": "all", "args": "after-used" }], //不能有声明后未被使用的变量或参数
        "no-use-before-define": 0, //未定义前不能使用
        "arrow-parens": 2, //箭头函数用小括号括起来
        "no-multiple-empty-lines": [1, { "max": 2 }], //空行最多不能超过2行
        "operator-linebreak": [2, "after"], //换行时运算符在行尾还是行首
        "indent": [2, 2, { SwitchCase: 1 }], //缩进风格,缩进两格
        "comma-dangle": [2, "never"], //对象字面量项尾不能有逗号
        "dot-location": 2, //对象访问符的位置,换行的时候在行首还是行尾
        "func-call-spacing": 2, //函数调用不要空格
        "key-spacing": [2, { "afterColon": true, "mode": "strict" }], // key的冒号后面要有空格
        "no-dupe-keys": 2,//在创建对象字面量时不允许键重复 {a:1,a:1}
        "no-duplicate-case": 2,//switch中的case标签不能重复
        "no-floating-decimal": 2,//禁止省略浮点数中的0 .5 3.
        "no-multi-spaces": 2,//不能用多余的空格
        "no-multi-str": 2, //字符串不能用\换行
        "object-property-newline": 0, //对象属性换行时注意统一代码风格。
        "padded-blocks": 0,//块语句内行首行尾是否要空行
        "vue/v-bind-style": ["error", "shorthand"],
        "vue/v-on-style": ["error", "shorthand"],
        "prefer-destructuring": 0,
        "class-methods-use-this": 0,
        "no-mixed-operators": 0,
        "max-len": 0, //字符串最大长度
        "no-unused-expressions": 2, //禁止无用的表达式
        "import/no-dynamic-require": 0,
        "func-names": 0, //函数表达式必须有名字
        "no-underscore-dangle": 0, //标识符不能以_开头或结尾
        "no-restricted-properties": 0,
        "no-restricted-syntax": 0,
        "no-prototype-builtins": 0,
        "no-plusplus": 0, //禁止使用++,--
        "one-var": 0, //连续声明
        "no-tabs": 0,
        "prefer-const": 0, //首选const
        "global-require": 0,
        "guard-for-in": 0, //for in循环要用if语句过滤
        "import/extensions": 0,
        "no-console": 0,
        "no-return-assign": 0, //return 语句中不能有赋值表达式
        "no-param-reassign": 0, //禁止给参数重新赋值
        "no-nested-ternary": 0, //禁止使用嵌套的三目运算
        "camelcase": 0, //强制驼峰法命名
        "eqeqeq": 0,//必须使用全等
        "import/no-extraneous-dependencies": 0,
        "no-debugger": isPro ? "error" : "off"
      }
    }
  • 相关阅读:
    转载原型,原型链,继承
    转载闭包
    转载vue中的mixin的使用
    转载深拷贝和浅拷贝以及内存
    webapp项目架构畅想(vue3).md
    vite(or rollup) 实现 webpackChunkName
    并发编程
    Thread和Runnable
    synchronized关键字
    Callable
  • 原文地址:https://www.cnblogs.com/caihongmin/p/16661493.html
Copyright © 2020-2023  润新知