.eslintrc 中的 "plugins" 属性 是做什么的?

What "plugins" property in .eslintrc does?

module.exports = {
  root: true,
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint'],
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
  ],
};

每当我添加或删除此行时:plugins: ['@typescript-eslint'] eslint 似乎表现相同。 plugins 属性 究竟有什么作用以及何时需要使用它?

如果您考虑什么是插件,这个问题就很简单了。 文档并没有真正做好 out-right 说明什么是 ESLint 插件,但如果你通读了文档 (https://eslint.org/docs/user-guide/configuring),那么弄清楚就很简单了:

ESLint supports the use of third-party plugins

When using rules, environments or configs defined by plugins. Before using the plugin, you have to install it using npm.

所以插件是可以定义规则、环境或配置的第 3 方模块。

所以回答你的问题:

What exactly plugins property does [sic]

插件 属性 告诉 ESLint 你想使用什么插件

and when using it is required? [sic]

当你使用插件中的东西时,你必须首先用 plugins 属性.

告诉 ESLint

Plugins seem to work anyway when this field is omitted

如果您使用 extends 选项和语法 plugin:<plugin>/<config>,那么 ESLint 将提前从插件加载特定文件。

为什么?因为这允许插件提供配置并减少您需要的配置量。插件的配置可以为您提供 plugins 选项,这意味着您不需要自己做。

我也很好奇什么是parser和plugin

来自documentation

“例如,一旦此 解析器成功为 TypeScript 源代码生成 AST,它很可能包含一些标准中不存在的信息 JavaScript 上下文,例如 TypeScript-specific 构造的数据,如接口。

ESLint 中内置的核心规则,例如缩进,不了解此类构造,因此不可能期望它们开箱即用。

相反,您还需要再使用一个插件,它将添加或扩展具有 TypeScript-specific 功能的规则。"

这有助于我更好地理解它。