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