
ESLint 和 JSCS 大约在 2013 年相继启动,仅相隔三周。两个团队都有着相似的想法:利用 ESTree 兼容工具(如 Esprima)的生态系统,为 JavaScript 创建下一代静态分析工具。虽然 ESLint 的主要目标是创建一个具有可插拔规则的 linter,而 JSCS 的主要目标是规范代码风格指南,以便于验证和修复。两个项目都得到了发展和普及,很快我们发现自己在功能方面互相追赶。
近三年来,两个团队一直在努力解决相同类型的问题:如何共享配置、如何自动修复一些问题,以及如何使各自的生态系统发展壮大。我们一直在并行地做很多相同的工作,最近两个团队会面讨论了这些问题。我们都得出结论,作为一个团队共同解决这些问题,比继续相互竞争更好。
以下是关于我们将如何作为一个团队前进以及我们对 JSCS 和 ESLint 的计划的更多详细信息。
欢迎 JSCS 团队
我很高兴地宣布,从即日起,JSCS 团队正式成为 ESLint 团队的一部分。我邀请大家欢迎 Marat Dulin、Oleg Gaidarenko、Mike Sherov、Alexej Yaroshevich 和 Henry Zhu,并期待与他们一起工作。JSCS 团队的所有成员都将加入 ESLint 作为提交者(基于我们的 治理政策),以表彰他们对 JSCS 的工作。
Joel Kemp 决定专注于其他工作,不会加入 ESLint。我和团队的其余成员也想感谢 Joel 多年来对 JSCS 的许多贡献。
JSCS 3.0.0
今天,JSCS 发布了 3.0.0 版本,这将是 JSCS 的最后一个主要版本。这个版本已被重写为使用具体的语法树(CST)而不是抽象语法树(AST)。CST 的概念在 JavaScript 生态系统中已经流传了一段时间,JSCS 3.0.0 代表了第一个在生产环境中完全实现 JavaScript CST 使用的工具。因此,我们真的需要来自 JSCS 社区对这个版本的反馈,因为我们可能会在 ESLint 中采用相同或类似的方法。
如果您是当前的 JSCS 用户,我强烈建议您升级到 3.0.0 并报告您的体验。JSCS 团队将在短期内继续致力于 JSCS,修复报告的错误。
让 ESLint 为 JSCS 用户服务
我们认识到 JSCS 拥有庞大而活跃的用户群,因此,ESLint/JSCS 联合团队的首要目标是让 JSCS 用户轻松过渡到 ESLint。为此,我们短期计划包括以下任务:
- 识别 JSCS 中存在但 ESLint 中缺失的规则,并创建尽可能多的这些规则。(#5856)
- 整合一种将
.jscsrc文件转换为.eslintrc文件的方法,目标是拥有一个命令来自动执行此操作。(#5857) - 为最流行的 JSCS 预设创建 ESLint 可共享的配置。(#5858)
- 扩展 ESLint 的自动修复功能,以修复更多问题,并尽可能地接近 JSCS 2.x 中提供的自动修复水平。
- 编写文档,指导 JSCS 用户过渡到 ESLint。(#5859)
查看关于上述任务的里程碑 这里。
我们预计这项工作需要几个月的时间,因此我们仍然鼓励当前的 JSCS 用户升级到 JSCS 3.0.0 并向团队提供反馈。当完成所有支持 JSCS 用户在 ESLint 中的更改后,我们将开始鼓励 JSCS 用户切换到 ESLint。
未来一片光明
有了新的 ESLint/JSCS 联合团队,您可以期待 ESLint 在未来取得更多成就。我们现在拥有世界上最优秀的人才致力于将 ESLint 打造成为最佳的 JavaScript 语法分析工具。我个人对 ESLint 的未来以及解决更困难的问题(例如,使每个规则的自动修复成为可能,并将类型信息纳入我们的分析)感到非常兴奋。当我们共同致力于同一个工具时,我们可以走得更远,更快。
- Nicholas

