最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 玩转ESLint自定义规则

    正文概述 掘金(Gavin_3岁)   2021-02-21   1292

    初始化demo

    使用 npm 安装 ESLint:

    $ npm install eslint --save-dev
    

    创建配置文件:.eslintrc

    {
       "parser": "esprima",  // 默认的解析器
       "rules": {
           "semi": ["error", "always"],
           "quotes": ["error", "double"]
       }
    }
    

    在package.json中添加命令

    "script": {
    	"lint": "eslint -c ./.eslintrc --rulesdir ./my-rules/rules/file.js index.js"
    }
    

    一切看似很平静,项目初始化工作已经准备的差不多了。想必有人就会迫不及待的运行下npm run lint,当然报错了。看官莫着急,且听下面分析。

    创建自定义规则

    my-rules目录结构

    my-rules
      |—— rules
         |—— file.js 
    

    file.js

    module.exports = {
      meta: {
        docs: {
          description: '描述',
        },
        fixable: null, // TODO 代码修复
      },
      create(context) {
        return {
          MemberExpression(node) {  // 遍历ast的节点
            context.report({
              node,
              message: '错误描述信息',
            })
          },
        }
      },
    }
    

    看到这里是不是很好奇MemberExpression()是什么函数?为什么create返回的对象,函数什么时候调用?又为什么可以遍历到代码里的节点?

    关于默认解析器解析的ast可以看这里espree: https://astexplorer.net/

    关于ast的生成和遍历这里就不做过多的说明,有感兴趣的同学可以了解下编译器的原理,了解下如果分析代码,如何形成token,到ast,最终再生成代码的过程。

    接下来就是修改配置文件:.eslintrc

     {
        "parser": "esprima",  // 默认的解析器
        "rules": {
            "semi": ["error", "always"],
            "quotes": ["error", "double"]
    +       "file.js": "error" 
        }
    }
    

    到这里,自定义ESLint规则已经可以实现了。感兴趣的小伙伴可以动手试试。在项目本地新增自定义规则而不用发npm包。(欢迎小伙伴一起讨论,可以关注: coding前端)


    起源地下载网 » 玩转ESLint自定义规则

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元