ESLint共享配置的两种方式eslint-plugin和eslint-config

使用ESLint很久了,也看了ESLint官方文档很多遍,但对于ESLint配置的规则还是不胜清楚,例如:

{
  "extends": ["plugin:prettier/recommended"]
}

上面extends的值为什么要"plugin:"开头?这里的prettier插件需要显示安装吗?像这样plugins: ["prettier"]

{
  "plugins": ["prettier"],
  "rules": {
    "prettier/prettier": "error"
  }
}

上面规则"prettier/prettier": "error"表示的是插件prettier中的规则prettier吧?

{
  "extends": ["prettier"],
}

上面的规则extends值为啥又没有"plugin:"前缀了呢?

为了解释上面的几个问题,首先要从ESLint的插件和共享配置说起。

ESLint插件

ESLint的规则十分便于扩展,而扩展的途径就是为ESLint添加插件,插件文件的基础格式是:
我们创建一个插件叫eslint-plugin-myplugin

module.exports = {
	configs: {
      config1: {
        plugins: ['myplugin'],
        rules: {
			"myplugin/rule1": "error"
		}
	  }
    },
	rules: {
	  rule1: {
	    create: function (context) {
	        // rule implementation ...
	    }
	  }
	}
}

上面编写的ESLint插件包含了两部分,一个是rules部分定义了这个插件自定义的规则,这里对应的是规则rule1。另一个是配置部分configs字段定义的规则集合,这里对应了config1

使用插件myplugin

在插件中引入的规则和配置可以在项目的ESLint配置文件中使用。
插件中定义的规则(插件中rules下定义的规则)使用方法如下:

{
	"plugins": ["myplugin"], // 可以将eslint-plugin这个前缀省略
	"rules": {
		"myplugin/rule1": "error"
	}
}

在配置文件中使用插件中的规则首先需要安装插件(在plugins下引入插件),然后才能在rules字段下加上插件名 + / + ruleName的形式使用插件中定义的规则。

除了使用插件中定义的规则,还可以使用插件中定义好的配置(confings字段下定义的内容)。
使用插件中的配置则不需要像使用插件中的规则一样显示安装插件(plugins: […])。

{
	"extends": ["plugin:myplugin/config1"]
}

在extends字段中使用 plugin:pluginName/configName 的形式使用插件中定义的指定配置。
为什么需要plugin作为前缀了呢?
因为extends继承的配置有两个来源,一个是插件中定义的,就像上面介绍的,eslint-config-configname也可以生成可共享配置。

eslint-config-myconfig

定义一个用于共享的配置包,这个包的名字最好以eslint-config开头。

module.exports = {
	rules: {
		...
	}
}

定义好的包,可以在ESLint的配置文件中使用。

{
	"extends": ["myconfig"]
}

直接 extends: [configName] 就完成了对配置文件的继承。

参考

eslint-config-prettier
eslint-plugin-prettier

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值