Skip to content
MiTu

MiTu

A Web developer who loves to Reading and photography

使用 vscode 配置 ESLint

Eslint

最初是由 Nicholas C. Zakas 于 2013 年 6 月创建的开源项目。它的目标是提供一个插件化的 javascript 代码检测工具。 对于每一个开发者(尤其是团队项目开发)而言都是非常值得使用的,这样会强制你写出高质量且整洁的代码

VS Code

Visual Studio Code 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持 Win、Mac 以及 Linux。

VUE + VSCode + Eslint

在使用 VSCode 编辑器开发 vue 项目时,当使用 vscode 自带的格式化代码,让 vue 项目的代码风格统一,整洁就很有必要了。

折腾了两天,看了好些文档,虽然总感觉并没有真正理解,但好歹也出了点成果

使用 eslint + VSCode 来写 vue 。 每次保存,vscode 就能标红不符合 eslint 规则的地方,同时还会做一些简单的自我修正

首先安装 eslint 插件,上文有官网通道,自己去官方查看安装步骤。

安装并配置完成 ESLint 后,我们继续回到 VSCode 进行扩展设置,点击 首选项 > 设置 打开 VSCode 配置文件,添加如下配置

javascript
  // eslint
  "editor.tabSize": 2,
  //根据文件后缀名定义vue文件类型
  "files.associations": {
    "*.vue": "vue"
  },
  "eslint.autoFixOnSave": true, //每次保存的时候将代码按eslint格式进行修复
  "eslint.options": {
    "plugins": ["vue"],
    "extensions": [
      ".js",
      ".vue"
    ]
  },
  //保存时eslint自动修复错误
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "vue",
    "vue-html",
    {
      "language": "vue",
      "autoFix": true
    }
  ],
  "vetur.format.defaultFormatter.html": "js-beautify-html",
  "vetur.format.defaultFormatterOptions": {
    "js-beautify-html": {
      "wrap_attributes": "force" // 可以换成上面任意一种value
    }
  }

PS:这里有一个不明白的地方,我在没有装 vscode 插件 Beautify 以及 Prettier 插件的时候,引用了上述配置也能生效。。。但建议大家将这两个插件都安装一下。

这样每次保存的时候就可以根据根目录下.eslintrc.js 你配置的 eslint 规则来检查和做一些简单的 fix。每个人和团队都有自己的代码规范,统一就好了

ESLint 和 Prettier 的冲突修复

在用 Prettier 格式化的时候,可以能会和 ESLint 定义的校验规则冲突,比如 Prettier 字符串默认是用双引号而 ESLint 定义的是单引号的话这样格式化之后就不符合 ESLint 规则了。所以要解决冲突就需要在 Prettier 的规则配置里也配置上和 ESLint 一样的规则,这里贴下 ESLintPrettier 的配置文件。

  • .eslintrc.js 配置文件
javascript
module.exports = {
  root: true,
  parser: "babel-eslint",
  parserOptions: {
    sourceType: "module"
  },
  env: {
    browser: true,
    node: true,
    es6: true
  },
  extends: "eslint:recommended",
  // required to lint *.vue files
  plugins: ["html"],
  // check if imports actually resolve
  settings: {
    "import/resolver": {
      webpack: {
        config: "build/webpack.base.conf.js"
      }
    }
  },
  // add your custom rules here
  //it is base on https://github.com/vuejs/eslint-config-vue
  rules: {
    "accessor-pairs": 2,
    "arrow-spacing": [
      2,
      {
        before: true,
        after: true
      }
    ]
  }
};
  • .prettierrc 配置文件
javascript
{
  "eslintIntegration": true,
  //使用单引号
  "singleQuote": true,
  //结尾不加分号
  "semi": false
}

这样把 ESLintPrettier 冲突的规则配置一致,格式化之后就不会冲突了。

命令式自动修复

bash
npm run lint -- --fix

命令行工具有几个选项,你可以通过运行 eslint -h 查看所有选项