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/
    ├── .oxlintrc.json
    └── index.js

설정 적용은 다음과 같습니다:

  • src/index.jsmy-project/.oxlintrc.json
  • package1/index.jsmy-project/package1/oxlint.config.ts
  • package2/index.jsmy-project/package2/.oxlintrc.json

기대할 수 있는 동작

설정 파일은 자동으로 합쳐지지 않습니다. 하위 디렉터리의 설정이 상위 설정에 영향을 주지 않습니다.

CLI 옵션은 부모·자식 여부와 관계없이 설정 파일보다 우선합니다.

-c 또는 --config로 설정 파일 위치를 명시하면 중첩 설정 조회가 비활성화되며, 해당 하나의 설정만 사용합니다.

--disable-nested-config 플래그로 중첩 설정을 끌 수도 있습니다.

options.typeAwareoptions.typeCheck는 루트 설정 전용입니다. 중첩 설정 파일에 설정되어 있으면 Oxlint가 오류를 보고합니다.

모노레포 패턴: extends로 공통 기준 공유

모노레포에서는 보통 루트에 공통 기준 하나와 패키지별 소규모 조정을 둡니다.

루트에 설정 파일을 두고(.oxlintrc.json 또는 oxlint.config.ts), 패키지 설정에서 이를 확장합니다.

json
{
  "rules": {
    "no-debugger": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "no-debugger": "error",
  },
});
json
{
  "extends": ["../.oxlintrc.json"],
  "rules": {
    "no-console": "off"
  }
}
ts
import baseConfig from "../oxlint.config.ts";
import { defineConfig } from "oxlint";

export default defineConfig({
  extends: [baseConfig],
  rules: {
    "no-console": "off",
  },
});

공통 기준은 한곳에 모으고 패키지 설정은 작게 유지할 수 있습니다.

설정 파일 확장

설정은 extends로 다른 파일의 설정을 재사용할 수 있습니다. 값은 파일 경로 배열이며, 선언한 설정 파일을 기준으로 상대 경로로 해석합니다.

확장되는 파일 이름은 자유롭게 지을 수 있습니다. 유효한 JSON 설정 파일이면 .oxlintrc.json일 필요는 없습니다. oxlint.config.ts의 경우 extends를 쓰는 파일 이름은 oxlint.config.ts여야 합니다.

예:

json
{
  "plugins": ["typescript"],
  "rules": {
    "typescript/no-explicit-any": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["typescript"],
  rules: {
    "typescript/no-explicit-any": "error",
  },
});
json
{
  "extends": ["oxlint-typescript.json"],
  "rules": {
    "no-unused-vars": "warn"
  }
}
ts
import typescriptConfig from "./oxlint-typescript.config.ts";
import { defineConfig } from "oxlint";

export default defineConfig({
  extends: [typescriptConfig],
  rules: {
    "no-unused-vars": "warn",
  },
});

확장 가능한 필드는 일부에 한정됩니다. 지원되는 항목은 다음과 같습니다:

  • rules
  • plugins
  • overrides