返回

点亮你的代码:发布你的 eslint 校验规则

前端

想要提升代码质量?不妨尝试发布自己的 eslint 校验规则。本文将带你一步步打造和发布你的专属规则,点亮代码之路!

项目初始化

  1. 创建文件夹 :以 "eslint-config-*" 为名创建一个文件夹。
  2. 初始化项目 :使用 npm 或 yarn 初始化一个新的 npm 包。
  3. 自定义项目配置 :在 package.json 文件中,添加以下配置:
{
  "name": "eslint-config-my-rules",
  "version": "1.0.0",
  "description": "My custom eslint rules",
  "main": "index.js",
  "scripts": {
    "test": "eslint . --ext .js,.jsx"
  },
  "dependencies": {
    "eslint": "^7.0.0"
  }
}
  1. 目录结构 :推荐的目录结构如下:
|- eslint-config-my-rules
|  |- index.js
|  |- lib
|  |  |- rules
|  |- test

编写规则

在 "lib/rules" 目录下创建规则文件,例如 "no-console.js",内容如下:

module.exports = {
  meta: {
    docs: {
      description: "Forbid the use of console.log and console.error",
      recommended: true
    }
  },
  create(context) {
    return {
      "MemberExpression[object.name=console][property.name=log]": node => context.report({
        node,
        message: "No console.log allowed!"
      }),
      "MemberExpression[object.name=console][property.name=error]": node => context.report({
        node,
        message: "No console.error allowed!"
      })
    };
  }
};

测试规则

在 "test" 目录下创建测试文件,例如 "no-console.test.js",内容如下:

const rule = require('../lib/rules/no-console');
const RuleTester = require('eslint').RuleTester;

const ruleTester = new RuleTester();

ruleTester.run('no-console', rule, {
  valid: [
    "const message = 'Hello world';",
    "console.warn('This is a warning');"
  ],
  invalid: [
    {
      code: "console.log('This is an error');",
      errors: [{ message: "No console.log allowed!"}]
    }
  ]
});

发布规则

  1. 构建项目 :运行 "npm run build" 或 "yarn build"。
  2. 发布包 :运行 "npm publish" 或 "yarn publish"。

使用你的规则

在你的项目中,安装你的规则包,并在 ".eslintrc.js" 文件中配置它:

module.exports = {
  extends: 'eslint-config-my-rules'
};

现在,你可以享受你自己的 eslint 校验规则带来的代码质量提升了!