blog.dopana

Back

Biomeを使用している際、リンターが通常のインポートを自動的にimport typeに変換する状況に遭遇することがあります。この機能は最適化に役立ちますが、既存のインポート構文を維持したい場合もあります。このガイドでは、この動作を無効にする3つの方法を紹介します。

問題#

BiomeにはuseImportTypeルールがあり、型のみを含むインポートを自動的にimport typeに変換します:

// Biomeフォーマット前
import { Icons } from '../../libs/icons';

// Biomeフォーマット後
import type { Icons } from '../../libs/icons';
typescript

これは以下の場合に問題になることがあります:

  • 通常のインポート構文を一貫して維持したい
  • インポートにランタイム値も含まれている(型だけではない)
  • ESLintから移行中でコードスタイルを維持したい

解決策#

方法1:ルールをグローバルに無効にする#

最も簡単な方法は、biome.jsonファイルでuseImportTypeルールを無効にすることです:

{
  "linter": {
    "enabled": true,
    "rules": {
      "style": {
        "useImportType": "off"
      }
    }
  }
}
json

[!TIP] biome.jsonを変更した後、変更を有効にするためにIDEまたはBiome拡張機能を再起動することを忘れないでください。

方法2:特定のファイルで無効にする#

特定のファイルまたは行のみで無効にする場合は、抑制コメントを使用します:

// biome-ignore lint/style/useImportType: 通常のインポート構文を維持
import { Icons } from '../../libs/icons';
typescript

または、ファイルの先頭にコメントを配置してファイル全体に適用します:

// biome-ignore-file lint/style/useImportType
import { Icons } from '../../libs/icons';
import { OtherType } from './other';
typescript

方法3:すべてのインポート整理を無効にする#

Biomeがフォーマット中に型インポートを移動、ソート、再構成している場合、organizeImports機能を完全に無効にすることができます:

{
  "assist": {
    "enabled": true,
    "actions": {
      "source": {
        "organizeImports": {
          "enabled": false
        }
      }
    }
  }
}
json

[!WARNING] これは型インポートだけでなく、すべてのインポート整理機能を無効にします。使用する前に慎重に検討してください。

各方法の使用タイミング#

方法使用タイミング利点欠点
グローバルチームが通常のインポートを一貫して維持したいプロジェクト全体に適用、管理が簡単import typeの最適化メリットが失われる
特定ファイル数ファイルのみ例外が必要柔軟、他のコードに影響しない手動でコメント追加が必要
organizeImports無効化インポート整理を完全に制御したいすべてのインポート自動化を無効化多くの便利な機能が失われる

実用的な例#

型インポートを使用するAstroコンポーネントがあるとします:

---
import type { Icons } from '../../libs/icons';

interface Props {
	name: keyof typeof Icons;
}
---
astro

useImportTypeを無効にした後、次のように書くことができます:

---
import { Icons } from '../../libs/icons';

interface Props {
	name: keyof typeof Icons;
}
---
astro

Biomeはこれを自動的にimport typeに戻しません。

参考文献#