联合 ESLint:一次配置,随处扩展
代码就像滑冰一样,风格很重要。易读性、一致性和团队和谐都是遵循严谨规则的好处。然而,除了这些好处之外,定义良好的风格指南还可以帮助我们避免常见的陷阱,让我们的代码审查远离车棚,专注于实际的软件设计。
但是,无论任何一套定义良好的规则有多好,如果没有冷酷无情的机器的雇佣执行,它就一文不值。进入ESLint,它有一套看似详尽的可配置规则和真正详尽的规则插件系列。
无论您从问卷自动化开始eslint --init
,还是手动扩展eslint:recommended
(它在框中!)或airbnb
使用一些自定义细节,都可能需要一些调整才能获得您想要的效果。如果您只需调整一次即可在整个组织或项目系列中共享结果,那当然会很棒。
说实话这很简单。首先以您喜欢的方式配置规则。我喜欢使用按域划分的多个文件。
也许不如上面的例子那么细致,但你明白我的意思了。
接下来,您需要将所有内容与一个入口点整合在一起。我们将其称为index.js
。请记住,我们将此配置发布为 JS 模块,因此.eslintrc
单独使用 是不行的。
几点简要说明。此文件可以根据您的需要简单或复杂。它可以包含所有规则和全局变量等,也可以从外部文件(如下所示)和模块扩展它们。在扩展的情况下,值得注意的是,规则优先级是上升的,最高数组索引占据首位。
module.exports = {
"extends": [
// Least Important
"./rules/quotes.js",
"./rules/quotes-override.js"
// Most Important
]
}
main
只要你的 中的 prop指向该文件,该文件的名称并不重要package.json
。
说到package.json
。如果您碰巧使用任何外部软件包或扩展任何第三方配置,这也是您声明那些对等依赖项的地方。eslint
出于显而易见的原因,它不是可选的。
{
"name": "eslint-config-your-name-here",
"version": "0.0.1",
"author": {
"name": "Chomper Missisippiensis"
},
"private": false,
"license": "MIT",
"main": "index.js",
"peerDependencies": {
"eslint": ">= 3"
}
}
就这样。提交您的更改。推送它们。并且,假设您有一个 npm 用户帐户,请使用以下直观命令发布您崭新的配置包:
npm publish
没有 npm 用户名?没问题。 npm adduser
是您开始使用所需的 CLI 命令。
包的名称源自name
中的键package.json
。传统的命名模式eslint-config-your-name-here
是可行的,原因有二:1) 它清楚地表明了包的用途;2) 使用模块时,您可以省略该eslint-config
部分并仅扩展your-name-here
。
但是我如何使用它呢?
再简单不过了。跳入任何你想要符合你的风格和安装eslint
以及配置的项目啊啦:
npm i eslint eslint-config-your-name-here
现在创建一个.eslintrc
并导入你的配置。
{
"extends": "your-name-here"
}
就是这样。在 npm 上发布模块是如此简单,这有点不可思议,对吧?
???? 这种联合的最大好处是能够在一个地方做出更改,并看到它们传播到使用规则的所有地方。很酷,不是吗?