插件和eslint扩展之间有什么区别?

pin*_*inh 19 javascript eslint

我不明白为什么要有插件和扩展。它们之间有什么区别,我是否需要一个?

shm*_*mit 21

扩展使用配置文件,当您将其添加到扩展选项时,该文件将应用一组规则。另一方面,插件为您提供了一组规则,您可以根据需要单独应用这些规则。仅拥有插件不会强制执行任何规则。您必须选择所需的规则。插件可以为您提供零个,一个或多个配置文件。如果插件提供了配置文件,那么您可以在plugins部分中添加插件后,将其加载到extends部分中。

因此,从本质上讲,插件为您提供了一些已为您编码的规则,您可以选择相关的规则。它还可以提供配置文件,以应用作者认为在逻辑上分组/相关的规则,但是提供配置文件对于插件来说不是强制性的。另一方面,扩展允许您基于配置文件规范批量应用规则。

插件示例-eslint-plugin-react

"extends": [
    "eslint:recommended",
    "plugin:react/recommended"
  ]
Run Code Online (Sandbox Code Playgroud)

配置示例-eslint-config-google

"extends": [
    "google"
  ]
Run Code Online (Sandbox Code Playgroud)

祝好运...

  • “在插件部分添加插件后。” - 你确定吗?我只是使用了 `extends: ['plugin:react/recommended']` 而不将其添加到 `plugins: []` 部分。 (9认同)
  • 如果我扩展一个配置并且它有规则 a,它会在我的配置中自动启用。如果我使用插件,我必须在我的规则部分中从该插件中显式启用规则 b。 (2认同)
  • 在我看来,这并不能完全回答这个问题,这就是为什么这个主题有一个后续问题:/sf/ask/4306972981/ (2认同)

for*_*d04 14

除了 shmit 的好回答:

extends

是关于扩展配置的,不仅仅是插件。潜在价值是:

  • "eslint:recommended"
  • "eslint:all"
  • 来自 npm 包(eslint-config-xxx或范围名称)的可共享配置
  • 来自 npm 包的插件配置(eslint-plugin-xxx或范围名称)
  • 另一个配置文件,如 "./my/path/.eslintrc.js"

插件符号: plugin:<package name>/<configuration name>,例如eslint-plugin-react

 "extends": ["plugin:react/recommended"]
Run Code Online (Sandbox Code Playgroud)

通过从插件配置扩展,我们可以获得推荐的规则,而无需手动添加它们。

plugins

插件是一种特殊的eslint NPM包,其提供附加的规则定义(rules), environmentsprocessorsconfigs推荐的/默认规则值的不同配置。

物业于仅仅是一个标志安装有后为使给定的插件。我们现在可以参考插件的规则,但必须手动设置所有值。plugins .eslintrc.jsnpm irules

将其plugins视为激活插件的一种方式 - 要使用其规则,您需要在任何情况下在链中添加一次插件。

plugins不是需要在自己的配置,如果在配置中已经定义,你从延伸extends

例子:

eslint-plugin-react已经包含plugins: [ 'react' ],因此在自己的配置中不再需要这个条目,插件规则可以直接使用。

  • 需要明确的是,如果您使用“extends”属性,则不必使用“plugins”属性。但如果你想设置自定义规则,那么你应该使用“plugins”属性。这样对吗? (2认同)

pin*_*inh 6

所以发现插件添加了额外的功能并扩展为您提供了添加自己的自定义规则的基线。感谢我的朋友 Oliver 帮我回答了这个问题!