Skip to content

嵌套配置文件

Oxlint 可以在同一仓库中使用多个配置文件。它会自动检测名为 .oxlintrc.jsonoxlint.config.ts 的配置文件,并根据文件在目录树中的位置来应用它们。

这在需要各包拥有独立设置但仍保持共享基础配置的 monorepo 场景中非常有用。

如果你只需要排除某些文件或文件夹,请改用 忽略文件

工作原理

对于每个被检查的文件,Oxlint 会使用相对于该文件最近的配置文件(.oxlintrc.jsonoxlint.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.json
  • package1/index.js 使用 my-project/package1/oxlint.config.ts
  • package2/index.js 使用 my-project/package2/.oxlintrc.json

期望行为

配置文件不会自动合并。子目录中的配置不会影响父目录的配置。

命令行选项会覆盖配置文件,无论这些选项来自父目录还是子目录。

使用 -c--config 显式指定配置文件路径时,将禁用嵌套配置查找,Oxlint 将仅使用该单一配置文件。

你也可以通过 --disable-nested-config 标志来禁用嵌套配置。

Monorepo 模式:通过 extends 共享基础配置

在 monorepo 中,你通常希望在根目录有一个共享的基础配置,并对各个包进行少量特定调整。

你可以通过在根目录保留一个 .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