概要
前回はeslint9のflatconfigを試した。
今回は静的解析をeslintで行うSonarJSを導入する。
sonarjsはまだv9に対応しきっていないのでv8にダウングレードした。(v8は2024.10.05でEOLになってしまうが...)
ついでにまだv9対応されていないimportプラグインなども入れた。
2024.10.11
eslint-importが2.31.0でeslint9に対応したのでv.8.57にする必要はなくなった。*
追加設定
v8に落としたことで、エイリアスが認識されなくなった。
eslint-import-resolver-typescriptプラグインで対応した。
packages/eslint-config-custom/default.js
// 省略
export default tseslint.config({
extends: [ js.configs.recommended
, ...tseslint.configs.recommended
, ...compat.extends('airbnb-base')
, ...compat.extends('plugin:import/recommended')
, ...compat.extends('plugin:sonarjs/recommended-legacy')
, ...compat.extends('eslint-config-turbo')
, prettierConfig
],
plugins: { 'unused-imports': unuserdPlugin, sonarjs },
rules: {
// 省略
'import/extensions': ['off'],
},
+ settings: {
+ 'import/resolver': {
+ node: {
+ extensions: ['.js', '.jsx', '.ts', '.tsx'],
+ },
+ typescript: {},
+ },
},
});
また。フロントエンド側のtsconfigにreferencesを使っていたのでそのままでは認識されなかった。
apps/pl-app/tsconfig.json
{
"files": [],
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
}
これもResolverに追加設定で解決した。
apps/pl-app/eslint.config.mjs
import customConfig from '@async-ttrpg/eslint-config-custom/frontend.js';
import tseslint from 'typescript-eslint';
export default tseslint.config({
extends: [...customConfig],
settings: {
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
typescript: {
+ project: "./tsconfig.app.json",
},
},
},
});