前端工程化2:从0到1的eslint插件开发教程

从0-1的eslint插件开发教程
开发eslint插件目的:根据项目需要,自定义满足项目特殊需要的校验规则是

参考eslint官方文档展开阐述

插件开发
自定义规则
单元测试

下面开始通过一个示例demo来介绍插件整个开发流程

代码中出现的方法及变量的详细解释与相关文档,会在文末给大家列举出来,大家可以先把代码拷贝到自己的demo中然后结合本文第3部分的变量|方法解释去理解代码

开发一个校验注释中是否包含指定关键词的插件(eslint-plugin-comments-key)

1. 环境准备

目录结构


├── README.md                   插件介绍文档
├── index.js                    对外暴露插件
├── lib                         
│   └── rules                   自定义规则
│       └── comments-key.js     
├── package.json
└── tests                       测试自定义规则
    └── lib
        └── rules
            └── comments-key.js

安装依赖

  • eslint
  • mocha
npm i eslint mocha -D

2. 开始编码

编写自定义规则
不包含自定义参数校验规则

/lib/rules/comments-key.js

module.exports = {
   
   
    meta: {
   
   
        type: "suggestion",
        docs: {
   
   
            description: "Not allowed comment words", // 规则的简述
            category: "Stylistic Issues", // 规则分类
            recommended: true //  配置文件中的 "extends": "eslint:recommended"属性是否启用该规则
        }
    },
    create: function (context) {
   
   
        // context对象包含与规则上下文相关的信息
        // 返回一个SourceCode对象,你可以使用该对象处理传递给 ESLint 的源代码
        const sourceCode = context.getSourceCode()

   // 定义不被允许出现在注释中的内容
        const notAllowWords = ['fixme', 'xxx']
        return {
   
   
            Program(node) {
   
   
                // 获取所有注释的节点
                const comments = sourceCode.getAllComments()
                // 遍历注释节点判断是否有不符合规范的
                comments.forEach(comment => {
   
   
                    let {
   
    loc, value, type } = comment
                    value = value.toLowerCase()
                    let warnWord = ''
                    // 判断注释内容是否包含不被允许的word
                    for (const word of notAllowWords) {
   
   
                        if (value.includes(word)) {
   
   
                            warnWord = word
                        }
                    }

                    if (warnWord) {
   
   
                        context.report({
   
   
                            node: comment, // 可选 与问题有关的 AST 节点
                            message: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值