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 等工具时特别有用,这些工具通过查询字符串来配置模块的加载方式。

以下为启用此选项后 正确 的代码示例:

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

preferInline

type: boolean

default: false

当设置为 true 时,对于 TypeScript 代码,优先使用内联类型导入而非单独的类型导入语句。

以下为启用此选项后 正确 的代码示例:

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

如何使用

可通过配置文件或 CLI 启用此规则:

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

参考资料