配置插件
您可以通过各种不同的方式使用插件扩展 ESLint。插件可以包括:
- 自定义规则来验证您的代码是否满足特定期望,以及如果不满足该期望该怎么办。
- 自定义配置。
- 自定义环境。
- 自定义处理器从其他类型的文件中提取 JavaScript 代码或在 linting 之前预处理代码。
配置插件
ESLint 支持使用第三方插件。在使用插件之前,您必须使用 npm 安装它。
要在配置文件中配置插件,请使用 plugins
键,其中包含插件名称列表。插件名称中可以省略 eslint-plugin-
前缀。
{
"plugins": [
"plugin1",
"eslint-plugin-plugin2"
]
}
在 YAML 中:
---
plugins:
- plugin1
- eslint-plugin-plugin2
9m5PqDdNRekxWs9SDjpQlq0lPqzGJDzzAYazkpWC67w=
- 插件相对于配置文件进行解析。换句话说,ESLint 加载插件就像用户通过在配置文件中运行
require('eslint-plugin-pluginname')
获得的那样。 - 基本配置中的插件(由
extends
设置加载)相对于派生的配置文件。例如,如果./.eslintrc
有extends: ["foo"]
,而eslint-config-foo
有plugins: ["bar"]
,ESLint 会从./node_modules/
(而不是./node_modules/eslint-config-foo/node_modules/
)或祖先目录中找到eslint-plugin-bar
。因此,配置文件和基本配置中的每个插件都是唯一解析的。
命名约定
引入插件
cWnrBuC1QgfyTxKRHUvofPiTrKk7P/qNtoSTm7nkOcphn/YoRK1WJWOqRWBzOCh3CUCcWpNgCwtwzrWERJ5D26fH4fsgs9ZaT9XjcAyJNcc=
SYAgsyIe5VItiDTK0Ua9PQ==
{
// ...
"plugins": [
"jquery", // means eslint-plugin-jquery
]
// ...
}
qcunZyfd7ObnxgsFf9T6uA==
{
// ...
"plugins": [
"@jquery/jquery", // means @jquery/eslint-plugin-jquery
"@foobar" // means @foobar/eslint-plugin
]
// ...
}
使用插件
GTqeRzEOoDHqYTvD7CGGRw32eIK3dGq0iTLHhiW8/S7ndMB+ukxcXUKtyVDWRdOq+qTTBx44/vShXZGVZTCzHYHt+mcw00MLotoqrYe5a+o=
- 4gqp+4cPx+5YTSUdjRPi9V2UwMtzgMKnhHr5PEI5T5nk99JOEnU0GHBNO4eGYbrZyWausrf1RLDyi7wFuYUcad1eZzRqL+zWpQkEWhVoSeKvLVSRtF+ovH/3Zy4dvcG7tFOydtQPRQawViaq8i+qUZHEkiFBVty5qQqmNH1PBV0sNveEkVt1tulvHM1m2mwJEanewFGlnLJ5zX7YHOtqtw2ues26W6QJ0o+M5cli7zBTtuWjo/bx0TLRN5FE4xfgZ2eLQZ9dSKUYm6XLB48HnRDN2dmGbRtW2PnUFTmUv/6At5BmnpbzH3F5JP8noDXS
i5it4iurfMMrzxvmO7gMnA==
{
// ...
"plugins": [
"jquery", // eslint-plugin-jquery
"@foo/foo", // @foo/eslint-plugin-foo
"@bar" // @bar/eslint-plugin
],
"extends": [
"plugin:@foo/foo/recommended",
"plugin:@bar/recommended"
],
"rules": {
"jquery/a-rule": "error",
"@foo/foo/some-rule": "error",
"@bar/another-rule": "error"
},
"env": {
"jquery/jquery": true,
"@foo/foo/env-foo": true,
"@bar/env-bar": true,
}
// ...
}
指定处理器
hewpWeo+SKmV5iqf1bBTYKhMDZc1hBMTyRO+rRJNruyMCfZiY4bB7ZG7xTGGR2J/0JFYmD5V4DgK/tRyhdyRwEySXK466jU7+vbc6d5ZE5NoR/hjke3/QRMSE64JSPqCpv9b66pFddeQtjyKsFv8KV75J7Ue3c8QpaqgqhY4yDCAIeojK3aacasCHFJ6eEXjkM9u4Ii+H88pTxelZB+uC+194WSrnRuWvhrgwfOxMRAwcIYuUwlBKa31Ravu/TIAO9E4yTgkrQj0cf6/3LLwTD/4vZvnkKnSZY76EogOFnY=
5odruyzdkvIQEVZfO/xxxEDiQD8gTOQFgfrb81N1v9/vVTkO/fAL1CJJW8SpMwSRKO4qgzDuWDwgKVDNDNosSrUD0n4cfP7vI50XjQm273YbpJI1RnecFe8ZbTV9D5WoBRfQYMvpvMKRDyRJpp7LR2CBxhXB1Tlt6HlruuFS/rOxCDceiSkqPDQB/aArbqQhFRaqlRxCTjc2vZMCloXENqgfUcrrUUT8SXSWDqzopO8BbDMXYjqYDAAVzdl69DqAiXH5n1m1J7bGFTd8kvbO/ZNYfREMCrxyPScFBD8Sw5GbZrDrF1o+8Lz++J4and1L4LGnn+ga2e6OW8XHkP0yaw==
{
"plugins": ["a-plugin"],
"processor": "a-plugin/a-processor"
}
zPcHvlaNmnvpZtFgSS7E/heXE1vGLawnzesCMcNoZ/Dhea29c2AvvurudimdyGgc5WA6fq0HvhqGT93MvLnX1ZOHceO7jtWieg7Pt/5E6RMfT6nTmvj+bcdi5sYOc3MOOKMGpy+w0BmndjQGbRbrgfWPm8oF+Zk5jHaoY8dkTXJytaNPERmkqpypdZjCqHIdTN92k9KECbcjPaRu5bq/Fjnj7cvOHeTxhbI6NXKBz+asfopTqpqwdvcavDraA0Rd9zFqNd8CaY0mh93e5SSodmvqshj23yBXYiyPhOdj0BQ=
{
"plugins": ["a-plugin"],
"overrides": [
{
"files": ["*.md"],
"processor": "a-plugin/markdown"
}
]
}
FRU66bOzagD8Dfrn404tnhGser+8vgijIwGqvCyexXA9jAErMMjQX2hizq+LnAYuFK6g5enXJaIZn3vQrH4juECwrQBoL+AVWQAVlXTOY3J0s6DnPCkf+fD6bUeYZTMk5/wS/mkVADaH/yqCxuEmH/6awFCPDcu3okRtodYnnmmzFMf6wP05fHuFzLSmMEy3lwHP+Hnim8qi0INQ2UgFJRzRMldWHhC60nrABKIol7TqwzCvdu7bngu7t7AkXeyECpjxLkf0MhmFaKDQYPoWSJ2rAXuTvXBr8Zf+yY6aWAbdsEKkn8DC4ISOiP13PesyUisMsrI2cx1gyQ9HZ5T5cRowQt6WbvSWeD9nQY+RCym75EzSwXuSD9U9bQV5Y/ZaDU4+BJcXsj9+DW/joIIBriTXNE1bxPVPxPFYSnKMkYTmE5OUD1vSZPumBUur+bkQ7+XRHK5zW6+9BtjjMWsDnLRL9OaXMOfV0XXjdu7M16w=
{
"plugins": ["a-plugin"],
"overrides": [
{
"files": ["*.md"],
"processor": "a-plugin/markdown"
},
{
"files": ["**/*.md/*.js"],
"rules": {
"strict": "off"
}
}
]
}
ttilLbpp50FzgKnMGiGuw01y0jJ8z/LUy8tfq/4XdD6vuuP4enlgRtBWbofsc1Q+4C9z3hVdXLpLEhbiK7A4x7KSQxPV9gbJQ8V04Ax2qtRsoF41b3ngjlYHx8ZgiNu+I24C15jjUqK4biGMzu0JSPJ8iez8+J2l+4KF2ZrqoJo8uriSqBVbjY0wSZwj/poW3QYzQ00Q2TlRb0rb5Z5C5xTm5fVyydtOzL64lBR6gL0R78iohqJM+WllcbTKTmitGJhkahCX73VAgYyHYxotBQ16syD3todrbVWaddTveNOrDIqLYkJw64YTWq91vVONj0NSoKslpSWm2gkXgh1tSg==