Fork me on GitHub

关于Vetur、Prettier、ESLint插件配置冲突问题

  网上关于Vetur、Prettier、ESLint插件的配置问题,零零散散,基本都是各种……,你懂的😒,都模棱两可,讲不到核心,所以今天在这里做一个汇总。

一、基础认知

1、代码格式化

  通过查看 Vetur 的官方文档,我们可以发现,它不仅仅只有对.vue 文件的特供代码高亮的功能,还有:代码高亮、代码片段、Emmet 语法支持、语法错误校验检查、格式化代码、代码提醒、对三方 UI 框架的支持。

  通过查看格式化代码功能部分的文档,可以发现Vetur 绑定了一些格式化程序(prettier、sass-formatter、stylus-supremacy等)。所以我们要认识到:

  vetur 默认的格式化配置会覆盖在 vscode 的 setting.json 配置的 prettier 格式化配置上,所以要对 prettier 进行配置,直接在 Vetur👏 中配置就可以了。

2、代码规范

  首先要明白使用 eslint 插件能够达到什么样的效果? —— 编写代码时,若不符合 eslint 语法规范会有 警告、 报错提示 🤙。

  其次我们要知道:

对于配置文件来说:项目中 npm 的 ESLint规则 优先级是要高于 vscode 的 eslint规则

二、配置汇总

1、本地

  • settings.json
{
  // 1、Vetur配置
  // 指定 *.vue 文件的格式化工具为vetur
  "[vue]": {
    "editor.defaultFormatter": "octref.vetur"
  },
  // vetur格式化配置
  "vetur.format.options.tabSize": 2,
  "vetur.format.options.useTabs": true,
  "vetur.format.defaultFormatterOptions": {
    "prettier": {
      "tabWidth": 2,
      "printWidth": 300,
      "trailingComma": "none",
      "semi": false,
      "singleQuote": true,
      "bracketSpacing": true
    }
  },

  // 3、Prettier配置
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[markdown]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  // "prettier.configPath": "C:\\Users\\<用户名>\\.prettierrc",

  // 3、ESLint配置
  //eslint 代码自动检查相关配置
  "files.autoSave": "off",
  "eslint.enable": true,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "eslint.alwaysShowStatus": true, // 输出日志
  "eslint.trace.server": "verbose", // 终端提示
  "eslint.validate": [
    "javascriptreact",
    "javascript",
    // 新增其他校验文件
    "vue",
    "html"
  ]
}

2、开发

  • .eslintignore
build/*.js
src/assets
public
dist
  • .eslintrc.js
// 个性化代码风格配置
module.exports = {
  rules: {
    // 默认的规则
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",

    // 自定义的规则
    // "prettier/prettier": "off", // 若选用的是prettier代码规范,代码格式化可以交给Prettier插件,不用eslint-config-prettier
    // 强制第一个属性的位置(属性换行)
    "vue/first-attribute-linebreak": [
      2,
      {
        // 单行时,第一属性前不允许使用换行符
        singleline: "beside",
        // 多行时,第一属性前必须使用换行符
        multiline: "below",
      },
    ],
    // 强制每行的最大属性数
    "vue/max-attributes-per-line": [
      2,
      {
        // 单行时可以接收最大数量
        singleline: 10,
        // 多行时可以接收最大数量
        multiline: {
          max: 1,
        },
      },
    ],
    "space-before-function-paren": [2, "never"],
    "comma-dangle": [2, "never"],
    "comma-spacing": [
      2,
      {
        before: false,
        after: true,
      },
    ],
    "comma-style": [2, "last"],
    semi: [2, "never"],
    "semi-spacing": [
      2,
      {
        before: false,
        after: true,
      },
    ],
  },
};

三、总结

  其实,关于上面的一些配置,去看看官方文档、看看大佬的项目配置就可以比较快的得到自己满意的答案。

posted @ 2022-11-28 15:23  Lencamo  阅读(1129)  评论(0编辑  收藏  举报