eslint-config-alloy 是腾讯 AlloyTeam 创立的一套 ESLint 规则,自 2017 年 8 月发布第一个版本以来,不知不觉中已经收获到 1.2k stars,超过了 eslint-config-google,成为了世界上排名第三的 ESLint 规范1(仅次于 airbnb 和 standard)。javascript
两年多以来,咱们不多推广,主要靠你们口口相传,天然增加。可以超过 google 的规范,说明它确实受到了开发者的欢迎。那么 eslint-config-alloy 到底有什么过人之处呢?前端
随着前端社区的进化,eslint-config-alloy 的设计理念也有更迭,现在它的设计理念已经很先进了:vue
Prettier 是一个代码格式化工具,相比于 ESLint 中的代码格式规则,它提供了更少的选项,可是却更加专业。java
现在 Prettier 已经成为前端项目中的必备工具,eslint-config-alloy 也没有必要再去维护 ESLint 中的代码格式相关的规则了,因此咱们在 v3 版本中完全去掉了全部 Prettier 相关的规则,ESLint 用来检查它更擅长的逻辑错误了。react
至于缩进要两个空格仍是四个空格,末尾要不要分号,能够在项目的 prettier.config.js
中去配置,固然咱们也提供了一份推荐的 Prettier 配置供你们参考。git
你们还记得 ESLint 是怎么战胜 JSHint 成为最受欢迎的 js 代码检查工具吗?就是由于 ESLint 推崇的插件化、配置化,知足了不一样团队不一样技术栈的个性的需求。github
因此 eslint-config-alloy 也传承了 ESLint 的设计理念,不会强调必需要使用咱们这套规则,而是经过文档、示例、测试、网站等方便你们参考 alloy 的规则,在此基础上作出本身的个性化。typescript
因为 React/Vue/TypeScript 插件的文档没有中文化(或中文的版本很滞后),因此 alloy 的文档很大程度上帮助了国内开发者理解和配置个性化的规则。工具
实际上国内有不少团队或我的公开的 ESLint 配置,都参考了 alloy 的文档。测试
无情的推进自动化
eslint-config-alloy 经过高度的自动化,将一切能自动化管理的过程都交给脚本处理,其中包括了:
除此以外,经过自动化的脚本,咱们甚至能够将成百上千个 ESLint 配置文件分而治之,每一个规则在一个单独的目录下管理:
bad.js
和 good.js
输出到网站中,甚至能够直接在网站中看到 bad.js
的(真实运行 ESLint 脚本后的)报错信息这样的好处是很是明显的,测试即文档即网站,咱们能够只在一个地方维护规则和测试,其余工做都交给自动化脚本,极大的下降了维护的成本。简单来讲,当咱们有个新规则须要添加时,只须要写三个文件 test/index/another-rule/.eslintrc.js
, test/index/another-rule/bad.js
, test/index/another-rule/good.js
便可。
ESLint 的更新很快,几乎每周都有一个新版本,有时有新规则,有时会废弃已有规则,并且相关插件(React/Vue/TypeScript)也会时而更新,没有自动化工具的话,实在是难以跟进。
而 eslint-config-alloy 经过上述的自动化工具,能够在第一时间就收到 greenkeeper 提的 issue,告诉咱们哪一个插件更新了,其中的 travis-ci 构建日志会告诉咱们哪些规则须要添加:
这样就实现了,在前端社区快速更迭的时候可以及时跟进最新的规则,永远保持 eslint-config-alloy 的活力和先进。
其实咱们团队最开始使用 airbnb 规则,可是因为它过于严格,部分规则仍是须要个性化,致使后来越改越多,最后决定从新维护一套。通过两年多的打磨,如今 eslint-config-alloy 已经很是成熟与先进,也受到了公司内外不少团队的欢迎。
standard 规范认为你们不该该浪费时间在个性化的规范了,而应该整个社区统一一份规范。这种说法有必定道理,可是它是与 ESLint 的设计理念背道而驰的。你们还记得 ESLint 是怎么战胜 JSHint 成为最受欢迎的 js 代码检查工具吗?就是由于 ESLint 推崇的插件化、配置化,知足了不一样团队不一样技术栈的个性的需求。
因此 eslint-config-alloy 也传承了 ESLint 的设计理念,不会强调必需要使用咱们这套规则,而是经过文档、示例、测试、网站等方便你们参考 alloy 的规则,在此基础上作出本身的个性化。
因为 React/Vue/TypeScript 插件的文档没有中文化(或中文的版本很滞后),因此 alloy 的文档很大程度上帮助了国内开发者理解和配置个性化的规则。
实际上国内有不少团队或我的公开的 ESLint 配置,都参考了 alloy 的文档。
不要紧,eslint-config-alloy 从设计理念上就相信不一样团队不一样项目能够有不一样的配置,虽然你选择使用 airbnb,可是当你有个性化配置需求的时候,仍是能够来咱们网站上参考一下哦~
最近刚开始作国际化,已经开始有外国友人 star 了,相信金子终会发光的,也欢迎你们提意见、参与贡献。
说明:
<span id="1"></span>1: 以 stars 数量排名,其中 airbnb 仓库名是 airbnb/javascript
故搜索结果中没有