能否使用不同配置重复运行ESLint的max-len规则?
ESLint max-len规则能否重复配置运行?
问题场景
以ESLint的max-len规则为例,当前没法在不用不规范正则的前提下精准忽略长字符串——自带的ignoreStrings选项会直接忽略包含任意字符串的整行(哪怕是带带空字符串的长行)。有人提出临时方案:给含字符串的行设不同长度限制,配置如下:
'max-len1': [2, { code: 100, comments: 200, tabWidth: 2, ignoreTemplateLiterals: true, ignoreStrings: true, ignoreRegExpLiterals: true, ignoreUrls: true, }], 'max-len2': [2, { code: 200, comments: 200, tabWidth: 2, ignoreRegExpLiterals: true, ignoreUrls: true, }]
解答
直接用max-len1、max-len2这类自定义规则名重复运行内置max-len规则是行不通的,因为ESLint无法识别这些自定义名称对应的内置规则逻辑。
要实现“不含字符串的行用100长度限制,含字符串的行放宽到200”的需求,推荐这些更合理的方式:
- 注释指令临时调整:在含长字符串的行末尾添加
// eslint-disable-next-line max-len或// eslint-disable-line max-len,精准跳过该行的长度检查 - 使用增强版第三方规则:比如
eslint-plugin-unicorn提供的unicorn/max-len,它支持更精细的忽略配置,不会直接忽略整行,能解决原生规则的痛点 - 文件级覆盖配置:如果能按文件区分场景,可通过ESLint的
overrides配置给特定文件/目录应用不同的max-len规则,但这种方式无法针对单行的字符串情况做区分
要是你确实需要重复运行类似max-len的检查逻辑,只能通过自定义ESLint插件的方式,复制原生max-len的代码创建两个独立规则实例,但这种方式开发成本较高,不推荐作为临时方案使用。
内容的提问来源于stack exchange,提问作者Leo Jiang
相关产品推荐
相关产品推荐

