
ESLint 和 JSCS 大約在同時間起步,於 2013 年僅相差三週。兩個團隊的想法相似:利用與 ESTree 相容的工具(例如 Esprima)來創建下一代的 JavaScript 靜態分析工具。ESLint 的主要目標是創建一個具有可插拔規則的程式碼檢查工具,而 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 並向團隊提供反饋。當所有支援 ESLint 中 JSCS 用戶的必要更改完成時,我們會發佈公告,並屆時開始鼓勵 JSCS 用戶切換到 ESLint。
未來光明
有了新的合併的 ESLint/JSCS 團隊,您可以期待未來 ESLint 會帶來更多功能。我們現在有一些世界上最聰明的人正在努力使 ESLint 成為最好的 JavaScript 語法分析工具。我個人對 ESLint 的未來感到非常興奮,並著手解決一些更困難的問題,例如使每個規則都可自動修復,以及將類型資訊納入我們的分析中。當我們都使用相同的工具時,我們可以更快、更進一步。
- Nicholas