Biome lint で console.log を残したい時の3つの対処法

スポンサーリンク

Biome lint で console.log を残したい時の3つの対処法

はじめに

Biomeを導入してコードレビューやCI/CDで自動lintを回していると、こんな場面に遭遇します。

packages/app/src/utils/logger.ts:12:3 lint/suspicious/noConsole ━━━━━━━━━━━━━━━
✖ Don't use console.

デバッグ用の console.log はもちろん消すべきですが、ロガーユーティリティCLIツールの出力など、意図的に console を使いたい箇所まで怒られてしまうことがあります。

この記事では、Biomeで console 系メソッドを残したい時の3つの対処法を紹介します。


前提条件

  • Biome がインストール済み(v1.x)
  • biome.json が存在すること
npm install --save-dev --save-exact @biomejs/biome
npx biome init

対処法1:その行だけインラインで無効化する

1箇所だけ例外にしたい場合は、対象行の直前にコメントを追加します。

// biome-ignore lint/suspicious/noConsole: CLIの出力として使用
console.log(`ビルド完了: ${outputPath}`);

biome-ignore の後にルール名、コロンの後に理由を書くのがルールです。理由は省略できませんので注意してください。省略するとBiomeがエラーを出します。

複数のルールをまとめて無効化することもできます。

// biome-ignore lint/suspicious/noConsole lint/suspicious/noConsoleLog: デバッグ用途
console.log(data);

対処法2:ファイル単位で無効化する

テストファイルやCLIエントリポイントなど、ファイル全体で console を使いたい場合は biome.jsonoverrides を使います。

{
  "linter": {
    "rules": {
      "suspicious": {
        "noConsole": "error"
      }
    }
  },
  "overrides": [
    {
      "include": ["src/cli/**", "src/scripts/**"],
      "linter": {
        "rules": {
          "suspicious": {
            "noConsole": "off"
          }
        }
      }
    }
  ]
}

include にはglob形式でパスを指定します。これで src/cli/ 以下のファイルはすべて noConsole ルールが無効になります。


対処法3:プロジェクト全体でルールを warn に下げる

エラーではなく警告にとどめておきたい場合は "error""warn" に変更します。CIではエラーのみ失敗させて、警告は見逃す運用にできます。

{
  "linter": {
    "rules": {
      "suspicious": {
        "noConsole": "warn"
      }
    }
  }
}

Biomeの終了コードはエラーがあると 1 になりますが、警告のみの場合は 0 のままです。CIで biome check を実行している場合、warn にしておけばパイプラインが落ちなくなります。


使い分けのまとめ

状況 対処法
1〜2行だけ残したい インライン biome-ignore コメント
特定のファイル・ディレクトリごと残したい overrides で対象パスを指定
プロジェクト全体でエラーにしたくない ルールを warn に変更

基本はインラインコメントで最小限の範囲に留めるのがおすすめです。理由を書く強制があるので、後から見たときに意図がわかりやすくなります。


まとめ

  • biome-ignore lint/suspicious/noConsole: 理由 で1行単位の除外ができる
  • overrides を使えばファイル・ディレクトリ単位で設定を上書きできる
  • "warn" に下げればCIを落とさずに警告として残せる
  • 意図的な console 使用はインラインコメントで理由を明記するのがベストプラクティス