美文网首页
ESLint简介

ESLint简介

作者: __凌 | 来源:发表于2020-05-13 16:10 被阅读0次

    Lint是什么?

    * Lint 是检验代码格式工具的一个统称

    * 这类工具主要做两件事情:

           -- 提供编码规范;

           -- 提供自动检验代码的程序,并打印检验结果

    Lint发展史

    随着互联网发展,网站内容更加丰富,交互更加复杂,前端项目越来越庞大;2009 年,NodeJS 的诞生使得 JavaScript 可以跑在服务端,更是让其地位更加突出,再加之 JavaScript 本身设计上存在许多缺陷,代码不严谨也可能就会触发神奇的错误。 

    1、JSLint 出现,确实帮助许多 JavaScript 开发者节省了不少排查代码错误的时间。但是 JSLint 的问题也很明显——几乎不可配置,所有的代码风格和规则都是内置好的。  

    2、JSHint 出现,它的特点就是可配置,同时文档也相对完善,而且对开发者友好。很快大家就从 JSLint 转向了 JSHint。

    3、后来,Zakas 大佬发现 JSHint 也无法满足自己定制化规则的需求了,设想发明一个基于 AST 的 lint,可以动态执行额外的规则,同时可以很方便的扩展规则。

    2013 年的 6 月份,Zakas发布了全新的 lint 工具——ESLint。ESLint 的出现并没有撼动 JSHint 的霸主地位。由于前者是利用 AST 处理规则,用 Esprima 解析代码,执行速度要比只需要一步搞定的 JSHint 慢很多;其次当时已经有许多编辑器对 JSHint 支持完善,生态足够强大。

    真正让 ESLint 逆袭的是 ECMAScript 6 的出现。2015 年 6 月,ES2015 规范正式发布。但是发布后,市面上浏览器对最新标准的支持情况极其有限。如果想要提前体验最新标准的语法,就得靠 Babel 之类的工具将代码编译成 ES5 甚至更低的版本,同时一些实验性的特性也能靠 Babel 转换。这时 JSHint 就略尴尬,ES2015 变化很大,短期内无法完全支持。ESLint 可扩展的优势一下就体现出来了,不仅可以扩展规则,甚至连解析器也能替换。Babel 团队就为 ESLint 开发了 babel-eslint 替换默认解析器,让 ESLint 率先支持 ES2015 语法。

    2016 年,JSCS 开发团队认为 ESLint 和 JSCS 实现原理太过相似,而且需要解决的问题也都一致,最终选择合并到 ESLint,并停止 JSCS 的维护。 至此,ESLint 完美躺赢,替代 JSHint 成为前端主流工具。

    ESLint简介

    ESLint是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格。

     ESLint完全可配置,主要有两种方式来配置ESLint:

    1、 在注释中配置:使用JavaScript注释直接把配置嵌入到JS文件中。 

     2、 配置文件:使用下面任一的文件来为全部的目录和它的子目录指定配置信息。 

          --  javascript:使用.eslintrc.js文件并导出一个包含配置的对象。

          -- package.json:在package.json文件中创建eslintConfig属性,所有的配置包含在此属性中。 

          -- YAML:.eslintrc.yaml或者.eslintrc.yml JSON:.eslintrc.json,并且此文件允许使用JS形式的注释   

     这些文件的优先级则是按照以上出现的顺序(.eslintrc.js > .eslintrc.yaml > .eslintrc.yml > .eslintrc.json > .eslintrc > package.json)。

     可以被配置的信息主要分为3类: 

    Environments: javascript 脚步将要运行在什么环境(如:nodejs,browser,commonjs等)。 

    Globals:执行代码时脚步需要访问的额外全局变量。  

    Rules:开启某些规则,也可以设置规则的等级。


    文件配置方式

    env:你的脚本将要运行在什么环境中

    Environment可以预设好的其他环境的全局变量,如brower、node环境变量、es6环境变量、mocha环境变量等

    'env': {

        'browser': true,

        'commonjs': true,

        'es6': true

      },

    globals:额外的全局变量

    globals: {

        vue: true,

        wx: true

      },

    rules:开启规则和发生错误时报告的等级

    规则的错误等级有三种:

    0或’off’:关闭规则。

    1或’warn’:打开规则,并且作为一个警告(并不会导致检查不通过)。

    2或’error’:打开规则,并且作为一个错误 (退出码为1,检查不通过)。

    参数说明:

    参数1 : 错误等级

    参数2 : 处理方式

    配置代码注释方式

    有时我们可能要在代码中忽略eslint的某种检查,或者加入某种特定检查,此时我们可以用如下的方式:

    示例:

    忽略 no-undef 检查

    /* eslint-disable no-undef */

    忽略 no-new 检查

    /* eslint-disable no-new */

    设置检查

    /eslint eqeqeq: off/

    /eslint eqeqeq: 0/

    eslint 检查指令

    检查且修复

    eslint * --fix

    检查指定文件

    eslint app.js --fix




    WebStorm配置:

    https://www.jianshu.com/p/f6d3a5c5d545

    ESLint规则说明:

    https://www.jianshu.com/p/5e6ee862d6d5

    ESLint使用及配置,推荐看这篇文章

    https://www.jianshu.com/p/ad1e46faaea2

    相关文章

      网友评论

          本文标题:ESLint简介

          本文链接:https://www.haomeiwen.com/subject/uvwgnhtx.html