Skip to content

중첩 구성 파일

Oxlint은 동일한 저장소에서 여러 구성 파일을 사용할 수 있습니다. 자동으로 .oxlintrc.json 또는 oxlint.config.ts라는 이름을 가진 구성 파일을 탐지하고, 파일이 디렉터리 트리 내에서 어디에 위치하는지 기준으로 그들을 적용합니다.

이는 패키지마다 자체 설정이 필요하지만 여전히 공유 기본값을 유지해야 하는 모노레포에서 유용합니다.

파일이나 폴더를 제외하기만 하면 된다면, 대신 무시 항목을 사용하세요.

작동 방식

라인팅 대상이 되는 각 파일에 대해, Oxlint은 해당 파일에 가장 가까운 구성 파일 (.oxlintrc.json 또는 oxlint.config.ts)을 사용합니다.

다음 구조를 가정해 봅시다:

my-project/
├── .oxlintrc.json
├── src/
│   ├── index.js
├── package1/
│   ├── oxlint.config.ts
│   └── index.js
└── package2/
    ├── .oxlin트르컨피그.json
    └── index.js

구성 해석은 다음과 같습니다:

  • src/index.jsmy-project/.oxlintrc.json을 사용합니다
  • package1/index.jsmy-project/package1/oxlint.config.ts를 사용합니다
  • package2/index.jsmy-project/package2/.oxlintrc.json을 사용합니다

기대할 수 있는 사항

구성 파일은 자동으로 병합되지 않습니다. 하위 디렉터리의 구성 파일은 부모 구성 파일에 영향을 주지 않습니다.

명령줄 옵션은 구성 파일을 무조건 덮어씁니다. 이는 상위 또는 하위 디렉터리에서 오는 것이든 관계없이 마찬가지입니다.

-c 또는 --config를 사용하여 명시적으로 구성 파일 위치를 지정하면 중첩 구성 검색이 비활성화되며, Oxlint은 해당 단일 구성 파일만 사용하게 됩니다.

또한 --disable-nested-config 플래그를 사용하여 중첩 구성 설정을 비활성화할 수 있습니다.

모노레포 패턴: extends를 통해 베이스 구성 공유

모노레포에서는 종종 루트에 하나의 공통 기본 설정을 두고, 작은 패키지별 조정을 추가하고자 합니다.

이러한 목표를 달성하기 위해 루트에 .oxlintrc.json을 유지하고, 패키지 구성 파일들이 이를 확장하도록 합니다.

my-project/.oxlintrc.json
json
{
  "rules": {
    "no-debugger": "error"
  }
}
my-project/package1/.oxlintrc.json
json
{
  "extends": ["../.oxlintrc.json"],
  "rules": {
    "no-console": "off"
  }
}

이 방식은 공통 기본 설정을 한 곳에 유지하면서 패키지 구성 파일은 작고 집중적이게 만듭니다.

구성 파일 확장

extends를 사용하면 구성 파일이 다른 파일의 설정을 재사용할 수 있습니다. 값은 구성 파일에서 선언된 절대 경로 기준으로 해결되는 파일 경로 배열입니다.

확장되는 파일은 어떤 이름이어도 괜찮습니다. .oxlintrc.json이 아니어도 좋으며, 유효한 JSON 구성 파일이면 됩니다.

예시:

oxlint-typescript.json
json
{
  "plugins": ["typescript"],
  "rules": {
    "typescript/no-explicit-any": "error"
  }
}
.oxlintrc.json
json
{
  "extends": ["oxlint-typescript.json"],
  "rules": {
    "no-unused-vars": "warn"
  }
}

확장 가능한 속성은 일부만 허용됩니다. 지원되는 속성은 다음과 같습니다:

  • rules
  • plugins
  • overrides