eslint/no-duplicate-imports 风格
它做了什么
禁止重复的模块导入。
为什么这是不好的?
为每个模块使用单个导入语句会使代码更清晰,因为你可以通过一行就看到从该模块导入的所有内容。
示例
此规则的错误代码示例:
在以下示例中,第 1 行的模块导入在第 3 行再次出现。这些可以合并,使导入列表更加简洁。
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 时,仅包含类型说明符(内联类型或类型导入)的导入被视为与包含值说明符的导入分开,因此可以从同一模块在不同的导入语句中导入。
当 allowSeparateTypeImports 设置为 true 时的正确代码示例:
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')以及对该模块的标准导入语句。这种情况会被视为违反规则,因为本质上是两条语句从同一模块导入。
当 includeExports 设置为 true 时的错误代码示例:
js
import { merge } from "module";
export { find } from "module"; // 重新导出,这既是导入也是导出。当 includeExports 设置为 true 时的正确代码示例:
如果要从已导入的模块进行重新导出,请将导入添加到 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