
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 並向團隊提供意見回饋。我們將在所有必要的變更完成以支援 ESLint 中的 JSCS 使用者時宣布,並屆時開始鼓勵 JSCS 使用者切換到 ESLint。
未來光明
有了新的合併後的 ESLint/JSCS 團隊,您可以期待未來 ESLint 會有更多作為。我們現在擁有世界上最聰明的一些人才,致力於使 ESLint 成為 JavaScript 語法分析的最佳工具。我個人對 ESLint 的未來以及解決一些更困難的問題感到非常興奮,例如讓每個規則都能自動修正,以及將型別資訊納入我們的分析中。當我們都使用相同的工具時,我們可以更快、更進一步。
- Nicholas