Skip to content
← Back to rules

import/no-duplicates スタイル

何を実行するか

同じモジュール内で解決されたパスが複数回インポートされている場合に報告します。 これにより、不要な重複インポートを回避し、コードをきれいに保つことができます。

なぜ問題なのか

同じモジュールを複数回インポートすると、冗長性や不必要な複雑さが生じる可能性があります。 また、保守性にも影響を与え、開発者が混乱しやすく、コード内のインポートの使用方法が一貫しなくなるおそれがあります。

このルールに対する誤りの例:

javascript
import { foo } from "./module";
import { bar } from "./module";

import a from "./module";
import { b } from "./module";

このルールに対する正しい例:

typescript
import { foo, bar } from "./module";

import * as a from "foo"; // 名前空間インポート用に分離されたステートメント
import { b } from "foo";

import { c } from "foo"; // 型インポートは別個のステートメントとして記述(ただし)
import type { d } from "foo"; // `prefer-inline` が `true` である限り

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。

considerQueryString

type: boolean

default: false

true に設定した場合、インポートが重複しているかどうかを判断する際に、インポートパスのクエリ文字列部分も考慮します。 これは、webpack のようなローダーを使用してモジュールの読み込み方法を設定する場合に便利です。

このオプションを true に設定した場合の正しい例:

javascript
import x from "./bar?optionX";
import y from "./bar?optionY";

preferInline

type: boolean

default: false

true に設定した場合、TypeScript コードでは型インポートを個別のステートメントではなく、インラインで統合することを優先します。

このオプションを true に設定した場合の正しい例:

typescript
import { Foo, type Bar } from "./module";

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:

json
{
  "plugins": ["import"],
  "rules": {
    "import/no-duplicates": "error"
  }
}
bash
oxlint --deny import/no-duplicates --import-plugin

参照