📑
monorepoのプロジェクトでVsCodeでeslintが効かない場合
Angularでangular-eslintを使い、tslint廃止してeslintに変えた時にVsCodeでハマった話です。
まず、以下の記事やマイグレーション手順通りに進めます。
- Angular 11のプロジェクトをCodelyzerとTSLintからESLintへマイグレーションしてみた
- Migrating an Angular CLI project from Codelyzer and TSLint
angular-eslint
ではtslint.json
を元に .eslintrc.json
が生成されます。
ng lint
からeslintは効くが、monorepoのプロジェクトだとVsCodeで相対パス指定が必要でした。
しかし、相対パス指定の tsconfigRootDir
は .eslintrc.js
からしか使えないという。
(jsonは__dirname
指定できないため)
- typescript-eslint: monorepoでVS Codeからtsconfig.jsonのパスを正しく認識させる
- Issue - Make tsconfigRootDir relative to the .eslintrc file
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