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"; // 타입 가져오기에 대해 별도 문장 사용 (단, `prefer-inline`가 참인 경우 제외)
import type { d } from "foo"; // `prefer-inline`가 참인 경우

구성 옵션

이 규칙은 다음 속성을 가진 구성 객체를 수용합니다.

considerQueryString

type: boolean

기본값: false

true로 설정하면, 가져오기 경로의 쿼리 문자열 부분도 중복 여부 판단 시 고려됩니다.
webpack과 같은 로더가 모듈을 어떻게 로드할지를 구성하는 데 쿼리 문자열을 사용할 때 유용합니다.

이 옵션이 true로 설정된 경우의 적절한 코드 예시:

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

preferInline

type: boolean

기본값: false

true로 설정하면, TypeScript 코드에서 별도의 타입 가져오기 문장보다 인라인 타입 가져오기를 선호합니다.

이 옵션이 true로 설정된 경우의 적절한 코드 예시:

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

사용 방법

이 규칙을 구성 파일 또는 명령줄 인터페이스에서 활성화하려면 다음을 사용할 수 있습니다:

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

참고 자료