Skip to content
← Back to rules

eslint/no-duplicate-imports スタイル

An auto-fix is available for this rule.

何をするか

重複したモジュールのインポートを禁止します。

なぜ問題なのか

各モジュールに対して1つのインポート文を使用すると、コードが明確になります。これは、そのモジュールからインポートされるすべての内容が1行に一覧表示されるためです。

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

次の例では、行1のモジュールインポートが行3でも繰り返されています。これらは1つに統合することで、インポートの一覧をより簡潔にできます。

js
import { merge } from "module";
import something from "another-module";
import { find } from "module";

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

js
import { merge, find } from "module";
import something from "another-module";

設定

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

allowSeparateTypeImports

type: boolean

デフォルト: false

true の場合、値指定子(インライン型や型インポート)のみを持つインポートは、値指定子を持つインポートとは別物として扱われます。そのため、同じモジュールから別々のインポート文でインポートできるようになります。

allowSeparateTypeImportstrue に設定された場合の正しいコードの例:

js
import { foo } from "module";
import type { Bar } from "module";
js
import { type Foo } from "module";
import type { Bar } from "module";

includeExports

type: boolean

デフォルト: false

true の場合、このルールはエクスポートも確認し、export ... from 'module' のようなモジュールの再エクスポートと、同じモジュールに対する標準的なインポート文が両方存在するかどうかをチェックします。これらは、実質的に同じモジュールから2回インポートしているため、ルール違反と見なされます。

includeExportstrue に設定された場合の誤りの例:

js
import { merge } from "module";

export { find } from "module"; // 再エクスポートはインポートとエクスポートの両方なので、ルール違反。

includeExportstrue に設定された場合の正しいコードの例:

インポートしたモジュールから再エクスポートする場合は、インポートを import 文に追加して直接エクスポートするべきです。export ... from を使用しないでください。

js
import { merge } from "lodash-es";
export { merge as lodashMerge };
js
import { merge, find } from "module";

// これ以上上記のインポートと統合できない
export * as something from "module";

// 別の方法では書けない
export * from "module";

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、以下のように使用できます:

json
{
  "rules": {
    "no-duplicate-imports": "error"
  }
}
bash
oxlint --deny no-duplicate-imports

参照