중첩 설정 파일
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.js→my-project/.oxlintrc.jsonpackage1/index.js→my-project/package1/oxlint.config.tspackage2/index.js→my-project/package2/.oxlintrc.json
기대할 수 있는 동작
설정 파일은 자동으로 합쳐지지 않습니다. 하위 디렉터리의 설정이 상위 설정에 영향을 주지 않습니다.
CLI 옵션은 부모·자식 여부와 관계없이 설정 파일보다 우선합니다.
-c 또는 --config로 설정 파일 위치를 명시하면 중첩 설정 조회가 비활성화되며, 해당 하나의 설정만 사용합니다.
--disable-nested-config 플래그로 중첩 설정을 끌 수도 있습니다.
options.typeAware와 options.typeCheck는 루트 설정 전용입니다. 중첩 설정 파일에 설정되어 있으면 Oxlint가 오류를 보고합니다.
모노레포 패턴: extends로 공통 기준 공유
모노레포에서는 보통 루트에 공통 기준 하나와 패키지별 소규모 조정을 둡니다.
루트에 설정 파일을 두고(.oxlintrc.json 또는 oxlint.config.ts), 패키지 설정에서 이를 확장합니다.
{
"rules": {
"no-debugger": "error"
}
}import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"no-debugger": "error",
},
});{
"extends": ["../.oxlintrc.json"],
"rules": {
"no-console": "off"
}
}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여야 합니다.
예:
{
"plugins": ["typescript"],
"rules": {
"typescript/no-explicit-any": "error"
}
}import { defineConfig } from "oxlint";
export default defineConfig({
plugins: ["typescript"],
rules: {
"typescript/no-explicit-any": "error",
},
});{
"extends": ["oxlint-typescript.json"],
"rules": {
"no-unused-vars": "warn"
}
}import typescriptConfig from "./oxlint-typescript.config.ts";
import { defineConfig } from "oxlint";
export default defineConfig({
extends: [typescriptConfig],
rules: {
"no-unused-vars": "warn",
},
});확장 가능한 필드는 일부에 한정됩니다. 지원되는 항목은 다음과 같습니다:
rulespluginsoverrides