分叉核心 eslint 规则

Forking core eslint rules

我想对核心 eslint 规则做一些小的修改,例如array-bracket-newline,或 indent。这些规则通常取决于 eslint 中的实用程序,最常见的是 ast-utils。到目前为止,我已经使用了一个插件,在那里添加了修改后的规则,并做了 require('eslint/lib/rules/utils/ast-utils'),因为 eslint 无论如何都是对等依赖。

因为 https://github.com/eslint/eslint/commit/24c9f2ac57efcd699ca69695c82e51ce5742df7b 这不再可能,因为 exports 指令被添加到 package.json。现在更改核心 eslint 规则行为的常用方法是什么?

有什么干净的方法吗?


编辑:我目前最好的想法是分叉 eslint,删除 exports,然后在分叉上使用 require('eslint-fork/lib/rules/utils/ast-utils')。这意味着我无缘无故需要一个额外的 eslint 副本,但它是为了 linting,一点磁盘 space 并不重要。

可以通过完整路径要求未导出的文件,即:

const { dirname, join } = require('path');
const astUtilsPath = join(dirname(require.resolve('eslint')), 'rules/utils/ast-utils.js');
const astUtils = require(astUtilsPath);

请注意,此方法依赖于位于特定包文件夹中的主要导出('lib' 在 eslint 的情况下)。