從 TSLint 遷移到 ESLint
TSLint 過去是推薦的 linter,但現在 TSLint 已被棄用,ESLint 將接管其職責。本文將幫助您從 TSLint 遷移到 ESLint。
ESLint:安裝
您需要安裝 ESLint。ESLint 不原生支援 TypeScript,因此您還需要安裝 eslint-typescript-support
npm install --save-dev eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin
或者,如果您使用 yarn 作為包管理器
yarn add eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin --dev
上面的命令添加了 ESLint、一個使 ESLint 理解 TypeScript 的解析器,以及一些特定於 TypeScript 的規則。
現在,為了簡化實際遷移,請執行 tslint-to-eslint-config 工具。該工具將讀取您的 TSLint 配置並從中建立“最接近”的 ESLint 配置。
npx tslint-to-eslint-config
此命令 下載並執行該工具以執行遷移。有關更多選項,請檢視該工具的 使用指南。
現在應該會有一個新的 .eslintrc.js 檔案、一個日誌檔案 (tslint-to-eslint-config.log),並且很可能還會修改其他檔案,例如 .vscode/settings.json。請仔細檢查更改,特別是對現有檔案所做的更改,並檢視日誌檔案。
ESLint:配置
.eslintrc.js 檔案通常足以開始使用,但 parserOptions.project 屬性很可能仍然設定為您的 tsconfig.json 檔案。這意味著 ESLint 規則可以使用語義資訊,例如,這個變數是字串還是數字陣列?此配置啟用了某些強大的規則,但意味著 ESLint 的計算時間會更長。擴充套件的預設規則不需要語義資訊,除非您添加了需要語義資訊的規則,否則我們建議您刪除 parserOptions.project 屬性。
ESLint:執行
您現在已準備好執行 ESLint,但在執行此操作之前,我們建議您停用 TSLint。為此,請開啟“擴充套件”檢視,然後在 TSLint 擴充套件的上下文選單中選擇“停用”。
現在是時候進行 lint 了!使用此命令:eslint -c .eslintrc.js --ext .ts <mySrcFolder>(注意 --ext .ts 選項,它告訴 ESLint 檢視 TypeScript 檔案)。我們建議將其放入 package.json 檔案的 scripts 部分,如下所示
"lint": "eslint -c .eslintrc.js --ext .ts <mySrcFolder>"
要將 ESLint 與 Visual Studio Code 整合,請執行以下操作:
- 安裝 ESLint 擴充套件。
- 透過“任務: 配置任務”命令建立一個任務,然後選擇“npm: lint”。
- 在生成的
tasks.json檔案中,將問題匹配器配置為$eslint-stylish。
提示:ESLint 在處理事情的方式上有時會“更正確”,您可能會看到以前沒有的警告,例如呼叫缺少的分號。嘗試使用 --fix 選項讓 ESLint 為您清理。
TSLint:移除
恭喜。您現在應該已經擁有一個工作的 ESLint 設定,是時候進行清理了。
TSLint 的移除取決於您的專案,但通常包括以下步驟:
-
更新
.vscode/extensions.json以推薦 ESLint 擴充套件而不是 TSLint。"recommendations": [ "dbaeumer.vscode-eslint" ] -
刪除
tslint.json檔案。 -
在
package.json檔案中刪除對tslint的依賴。 -
使用
npm uninstall tslint解除安裝 TSLint。