📑

monorepoのプロジェクトでVsCodeでeslintが効かない場合

2021/01/21に公開

Angularでangular-eslintを使い、tslint廃止してeslintに変えた時にVsCodeでハマった話です。

まず、以下の記事やマイグレーション手順通りに進めます。

angular-eslintではtslint.json を元に .eslintrc.jsonが生成されます。
ng lintからeslintは効くが、monorepoのプロジェクトだとVsCodeで相対パス指定が必要でした。
しかし、相対パス指定の tsconfigRootDir.eslintrc.js からしか使えないという。
(jsonは__dirname指定できないため)

eslintrc.jsonでも固定パスを指定できるが、VsCode上ではlintが動作するけど ng lint コマンドではこける...。
結局のところ、VsCodeの設定で解決できました😄

最初は以下を指定していたが、これだとRootのフォルダ名が違った場合、他のmonorepoプロジェクトで使えず汎用的でない。

"eslint.workingDirectories": [
    { "pattern": "./packages/*/" }
]

以下の指定がベストだった👍

"eslint.workingDirectories": [
    { "mode": "auto" }
]

参考: ESLintの設定をしたAngular 11のプロジェクトでVS CodeのExtension「ESLint」を使ってみた

Discussion