mcpField
B
biome-js

biome-js

github.com/paulrberg開発1021.1k 回インストール今日更新
リポジトリ

biome-js について

biome-jsは、Sablierのプロジェクトパターンに基づくBiomeJS設定ガイドです。JavaScript、TypeScript、フロントエンドの開発者向けに、共有設定の継承、ルールの上書き、Gitフック、Biome v2.4以降の注意点をまとめています。

主な機能

  1. 01共有設定とモノレポでの継承
  2. 02対象ファイル指定とルール上書き
  3. 03テスト・生成ファイルの設定指針
  4. 04lint-stagedのコミットフック例
  5. 05Biome v2.4以降の設定メモ

活用シーン

  1. 01ライブラリやフロントエンドでBiomeを設定
  2. 02モノレポの設定を整理
  3. 03テストや生成コードのルールを調整
  4. 04コミット時のチェックとフォーマットを設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/paulrberg/agent-skills --skill biome-js

インストール後、Claude Code で/biome-jsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

examples/
base-config.jsonc
lint-staged.js
ui-config.jsonc

詳細

BiomeJS スキル

Sablier プロジェクトのパターンに基づいた、BiomeJS の設定に関する簡単なガイダンスです。

基本概念

共有設定の拡張

npm パッケージのエクスポートを通じて共有設定を拡張します。利用するプロジェクトでは、必ず独自の files.includes を指定してください。

{
  "$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
  "extends": ["@sablier/devkit/biome"],
  "files": {
    "includes": ["**/*.{js,json,jsonc,ts}", "!node_modules/**/*"]
  }
}

UI プロジェクトでは、base と ui の両方の設定を拡張します。

{
  "extends": ["@sablier/devkit/biome/base", "@sablier/devkit/biome/ui"],
  "files": {
    "includes": ["**/*.{css,js,jsx,json,jsonc,ts,tsx}"]
  }
}
モノレポの継承

モノレポでは、ワークスペースの設定は "//" を使用してルートから継承します。

// packages/my-package/biome.jsonc
{
  "extends": ["//"],
  "overrides": [
    // package-specific overrides
  ]
}
ファイルのインクルードパターン

files.includes は必ず明示的に指定してください。一般的なパターンは次のとおりです。

プロジェクトの種類パターン
ライブラリ**/*.{js,json,jsonc,ts}
UI/フロントエンド**/*.{css,js,jsx,json,jsonc,ts,tsx}
GraphQL を使用**/*.{css,graphql,js,jsx,json,jsonc,ts,tsx}

除外対象:!node_modules/**/*、!**/generated、!dist

一般的なオーバーライド

テストファイル

テストファイルでは厳格なルールを緩和します。

{
  "overrides": [
    {
      "includes": ["**/tests/**/*.ts", "**/*.test.ts"],
      "linter": {
        "rules": {
          "style": {
            "noNonNullAssertion": "off"
          },
          "suspicious": {
            "noExplicitAny": "off"
          }
        }
      }
    }
  ]
}
生成ファイル/ABI ファイル

生成コードでは、ソートとコンパクトなフォーマットを無効にします。

{
  "overrides": [
    {
      "includes": ["**/abi/**/*.ts", "**/generated/**/*.ts"],
      "assist": {
        "actions": {
          "source": {
            "useSortedKeys": "off"
          }
        }
      },
      "javascript": {
        "formatter": {
          "expand": "never"
        }
      }
    }
  ]
}
インポートの制限

特定のモジュールに対して、バレルインポートを必須にします。

{
  "overrides": [
    {
      "includes": ["src/**/*.{ts,tsx}"],
      "linter": {
        "rules": {
          "correctness": {
            "noRestrictedImports": {
              "level": "error",
              "options": {
                "paths": {
                  "@/core": "Import from @/core (barrel) instead of subpaths"
                }
              }
            }
          }
        }
      }
    }
  ]
}

主なルールのリファレンス

ルールデフォルト理由
noFloatingPromiseserror未処理の Promise はバグの原因になります
noUnusedImportsoff開発中は許可し、コミット前にチェックします
noUnusedVariableserrorコードを整理された状態に保ちます
useImportTypewarn (separatedType)型のインポートを明示します
useSortedKeysonオブジェクトのキー順を統一します
useSortedClasseswarn (UI)Tailwind クラスをソートします
useFilenamingConventionkebab/camel/Pascal柔軟な命名規則
noVoidoffuseEffect コールバックに便利です
useTemplateoff文字列の連結を許可します

Git フックとの統合

Lint-Staged の設定

コミット前フックの標準的なパターンです。

// .lintstagedrc.js
module.exports = {
  "*.{json,jsonc,ts,tsx}": "bun biome check --write",
  "*.{md,yml,yaml}": "bun prettier --cache --write",
  "*.{ts,tsx}": "bun biome check --write --only=correctness/noUnusedImports",
};

noUnusedImports の個別パスでは、開発中ではなくコミット時にのみインポートの整理をチェックします。

UI 固有の設定

Tailwind CSS を使用するフロントエンドプロジェクト向けです。

{
  "css": {
    "parser": {
      "tailwindDirectives": true
    }
  },
  "assist": {
    "actions": {
      "source": {
        "useSortedAttributes": "on"
      }
    }
  },
  "linter": {
    "rules": {
      "nursery": {
        "useSortedClasses": {
          "fix": "safe",
          "level": "warn",
          "options": {
            "attributes": ["classList"],
            "functions": ["clsx", "cva", "cn", "tv", "tw"]
          }
        }
      }
    }
  }
}

Biome v2.4.0+ は *.module.css の CSS Modules 解析を自動的に有効にするため、プロジェクトで標準外の動作が必要な場合を除き、"cssModules": true を明示する必要は通常ありません。

Biome v2.4+ に関する注意事項

  • biome check と biome ci は、対象を絞ったルール/アクションの実行に --only と --skip をサポートするようになりました。
  • biome check --write は、修正を適用する際にフォーマットも適用するようになりました。
  • 設定の検索で、隠しファイル .biome.json と .biome.jsonc もサポートされるようになりました。
  • 設定の検索で、ユーザー設定ディレクトリ(例:Linux/macOS 相当の環境にある $HOME/.config/biome)もサポートされるようになりました。
  • 新しいフォーマッターオプション formatter.trailingNewline を使うと、末尾の改行挿入を無効にできます。
  • HTML フォーマッターの動作は v2.4.0 で大幅に変更されました。フォーマッターのサポートが有効な場合、HTML/Vue/Svelte/Astro では差分が大きくなることがあります。

トラブルシューティング

よくある問題

「No files matched」:files.includes のパターンがファイル構成に一致しているか確認してください。

ルールの競合:オーバーライドは順番に適用され、後のオーバーライドが優先されます。

スキーマエラー:IDE のサポートには、ローカルのスキーマ参照を使用してください。

"$schema": "./node_modules/@biomejs/biome/configuration_schema.json"
Biome と Prettier の比較

Biome は JS/TS/JSON/CSS のフォーマットを処理します。次の場合は Prettier を使用してください。

  • Markdown(.md、.mdx)
  • YAML(.yml、.yaml)

その他のリソース

例

./examples/ に動作する例があります。

  • ./examples/base-config.jsonc - ライブラリの最小構成
  • ./examples/ui-config.jsonc - Tailwind を使用するフロントエンドプロジェクト
  • ./examples/lint-staged.js - コミット前フックの設定
ドキュメント全文

高度な機能、移行、またはルールの完全なリファレンスについては、Context7 MCP 経由で公式の Biome ドキュメントを参照してください。

Use context7 to fetch Biome documentation for [specific topic]

ここで説明されていない機能については、最後の手段として biomejs.dev の公式ドキュメントを参照してください。

コメント