TSLintからESLintへの移行
TSLintはこれまで推奨されるリンターでしたが、現在、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拡張機能のコンテキストメニューから無効にするを選択します。
リンティングの開始です!このコマンドを使用してください:eslint -c .eslintrc.js --ext .ts <mySrcFolder>
(ESLintにTypeScriptファイルを見るように指示する--ext .ts
オプションに注意してください)。このコマンドを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
を更新し、TSLintではなくESLint拡張機能を推奨するようにします"recommendations": [ "dbaeumer.vscode-eslint" ]
-
tslint.json
ファイルを削除します。 -
package.json
ファイルからtslint
への依存関係を削除します。 -
npm uninstall tslint
でTSLintをアンインストールします。