用vue+eslint+vscode实现代码规范化

作者:Duang

来源:恒生LIGHT云社区

目的:这段时间我们组多人开发同一个前端项目,遇到同事提交的代码有大面的格式变更,找到原因是我们vscode安装的代码格式化规范插件和本地配置不同导致的,并且同事设置了保存自动格式化代码,这样的情况容易在合并代码时找不到实际的代码改动点,出现隐患。另一方面也是响应公司代码格式规范化的号召,所以花时间了解了下eslint,跟大家分享。

1. eslint介绍

lint是检查代码格式工具的一个统称,具体的工具有JsLint、Android-Lint等,本文介绍的eslint就是lint中的一种。

eslint官网介绍:可组装的JavaScript和JSX检查工具。

这里我们不讨论JSX,只讨论js。js是弱类型语言,不需要执行程序的编译,所以不容易在开发阶段及时的发现代码错误,需要在不断的调试中修改代码错误。eslint就是一种能够可以帮助前端工程师在编码过程中发现问题,而不是在执行过程中发现问题的工具。

2. eslint特点

  • 内置规则和自定义规则共用一套规则 API;
  • 内置的格式化方法和自定义的格式化方法共用一套格式化 API;
  • 额外的规则和格式化方法能够在运行时指定;
  • 规则和对应的格式化方法并不强制捆绑使用;
  • 每条规则都是各自独立的,可以根据项目情况选择开启或关闭;
  • 用户可以将结果设置成警告或者错误;
  • eslint 并不推荐任何编码风格,规则是自由的;
  • 所有内置规则都是泛化的。

3. eslint+vscode规范化代码操作步骤

3.1. vue项目安装eslint插件

终端输入:

npm install eslint --save-dev   
复制代码

3.2. 配置eslint

eslint 支持几种格式的配置文件,如果同一个目录下有多个配置文件,eslint 只会使用一个。优先级顺序如下:

  1. JavaScript - 使用 .eslintrc.js 然后输出一个配置对象。
  2. YAML - 使用 .eslintrc.yaml 或 .eslintrc.yml 去定义配置的结构。
  3. JSON -使用 .eslintrc.json 去定义配置的结构,eslint 的 JSON 文件允许 JavaScript 风格的注释。
  4. Deprecated -使用 .eslintrc,可以使 JSON 也可以是 YAML。
  5. package.json - 在 package.json 里创建一个 eslintConfig属性,在那里定义你的配置。

下面介绍一下第5种配置方式:

  "eslintConfig": {
    "root": true,
    // 预定义的全局变量
    "env": {
      "node": true
    },
    // 扩展通过字符串或者数组来扩展规则
    // extentds: 'standard',
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended" // 启用推荐的规则
    ],
    "parserOptions": {
    // 解析器,这里使用的是babel-eslint
      "parser": "babel-eslint"
    },
    // 自定义规则 可以根据项目需求自定义填写
    "rules": {}
  },
复制代码

3.3. vscode安装eslint扩展插件

只是在项目中安装eslint是不够的,需要在vscode中安装eslint扩展插件,并进行对应的配置才能看到代码中各种颜色的报错,报错如下图:

image-20210924165711816.png

如果不想被频繁的格式报错困扰开发过程,可以在vscode中安装代码自动修复的扩展插件,并在setting.json中进行配置,插件可以使用如:prettier-Code formatter、vetur 。

安装vetur插件后代码报错如下图:

image-20210928172928718.png

3.4. vscode setting.json配置

需要设置的本地,私人的代码规范化处理可以写在vscode 的setting.json文件中。想要实现保存即格式化代码就可以设置在setting.json中。setting.json文件打开方式:vscode-文件-首选项-设置-搜索eslint-随意找一个“在settings.json”中编辑打开settings.json,如下图:

image-20210924170704315.png

  1. 旧版本配置,如果按照下面配置报错,则使用新版本配置。
{
    "eslint.autoFixOnSave": true,
    "eslint.validate": [
        "javascript",
        {
            "language": "vue",
            "autoFix": true
        },
        {
            "language": "html",
            "autoFix": true
        }
    ]
}
复制代码
  1. 新版本配置
"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true,
  "eslint.probe": ["javascript", "vue", "html"]
},
复制代码

4. eslint规则

4.1. 三种级别值:

  • "off"或者0,不启用这个规则
  • "warn"或者1,出现问题会有警告
  • "error"或者2,出现问题会报错

4.2.规则写法:

规则名:值

规则名:[值,参数1,参数2……]


4.3. 常用规则举例:

规则名 规则介绍
no-console 禁用 console
no-debugger **禁用 **debugger
init-declarations 要求或禁止var声名中的初始化
eqeqeq 要求使用=== 和!==
indent 强制使用一致的缩进
max-len 强制一行的最大长度
max-len 强制一行的最大长度
semi 要求或禁止使用分号代替ASI
no-var 要求使用let或者const而不是var

详细的eslint自定义规则可以查看:cn.eslint.org/docs/rules/

4.4. 格式关闭规则

什么时候需要关闭格式,举个例子:当代码中出现正则/\ .js$/,格式交易可能会出现"unnecessary escape character:/\ .",这种情况不能通过修改代码来使报错消失,就可以使用格式关闭规则来跳过此类代码。

下面介绍几种规则:

  1. 关闭范围内格式校验
/* eslint-disable */

alert('foo');

/* eslint-enable */
复制代码
  1. 关闭某一行的所有格式交易
alert('foo'); // eslint-disable-line
复制代码

or

// eslint-disable-next-line

alert('foo');
复制代码

以上就是在vscode中的vue项目,使用eslint,实现代码规范化介绍,希望能对eslint有困惑的同学有所帮助!

猜你喜欢

转载自juejin.im/post/7018007596653084679