BIomeを使用しているプロジェクトで特定のルールのためにESLintを使用する設定

globalsが必要なのかはよく分かっていないです。

typescript-eslintはTSを処理するために必要で、tseslint.configs.baseとするとルール無しの状態で使えます。

ルールのところの型付けはもっと良い方法がありそうな気はする。

// eslint.config.ts
import type { Linter } from "eslint";
import sonarjs from "eslint-plugin-sonarjs";
import { defineConfig } from "eslint/config";
import tseslint from "typescript-eslint";
 
export default defineConfig([
  // 無視するファイルを指定
  { ignores: [".next/**", "out/**"] },
  // 適用するファイルを指定
  { files: ["**/*.{js,jsx,mjs,cjs,ts,tsx}"] },
  // @ts-ignore
  tseslint.configs.base,
  {
    plugins: { sonarjs }, // 何というキーで登録するかは各プラグインを見てください
    rules: {
      // 即座にreturnする場合は変数に代入せずにreturnするようにする
      // https://github.com/SonarSource/eslint-plugin-sonarjs/blob/master/docs/rules/prefer-immediate-return.md
      "sonarjs/prefer-immediate-return": "error",
    } satisfies Partial<Record<`sonarjs/${keyof typeof sonarjs.rules}`, Linter.RulesRecord[string]>>,
  },
  ...
]);