Oxlint

安装

bash
pnpm add -D @uniboot/oxlint-config oxlint

包内已带 @eslint-community/eslint-plugin-eslint-commentseslint-plugin-better-tailwindcsseslint-plugin-command 等运行时依赖;oxlint 本体由项目安装。

使用

@uniboot/oxlint-config 现在以 TypeScript 工厂 形式发布,导出与 oxlint 自带 defineConfig 兼容的 defineConfig,以及预合并好的 oxlintConfig 基线:

ts
// oxlint.config.ts(或 .mjs)—— 视当前 oxlint 版本支持的配置形态
import { defineConfig } from '@uniboot/oxlint-config'

export default defineConfig({
  rules: {
    // 本地覆盖
  },
})

defineConfig(config) 会把团队基线(oxlintConfig)与传入的 config 合并:categories / env / globals / rules / settings 走对象浅合并,ignorePatterns / overrides 走数组合并,jsPlugins / plugins 走集合去重。

仅支持 JSON 配置时

若你使用的 oxlint 版本仅识别 .oxlintrc.json,可在构建脚本里把 defineConfig 的产物落盘成 JSON:

js
// scripts/gen-oxlintrc.mjs
import { writeFileSync } from 'node:fs'
import { defineConfig } from '@uniboot/oxlint-config'

const config = defineConfig({
  rules: {
    // 本地覆盖
  },
})

writeFileSync('.oxlintrc.json', JSON.stringify(config, null, 2))

然后在 package.jsonscripts 中加一条 "oxlint:gen": "node ./scripts/gen-oxlintrc.mjs",提交前或预安装钩子里跑即可。

预设里大约包含什么

@uniboot/oxlint-config 通过 mergeOxlintConfigs 组入下列片段:

  • javascript / typescript / vue / node — 各语言/平台基线
  • command / comments — eslint-comments 与 command 插件相关
  • import — 导入顺序与未解析项
  • unicorn — 现代 JS 规则
  • tailwindcss — Tailwind 类名与可达性
  • test — 测试文件偏松规则
  • ignores — 默认忽略
  • overrides — 文件粒度覆盖
  • plugins — 插件白名单

完整内容以源码 uniboot-configs/packages/lint-configs/oxlint-config/src/configs/* 为准。

类型与导出

ts
import {
  defineConfig,
  mergeOxlintConfigs,
  oxlintConfig,
} from '@uniboot/oxlint-config'

import type { OxlintConfig, UnibootOxlintConfig } from '@uniboot/oxlint-config'

旧名 VbenOxlintConfig 标注为 @deprecated,请改用 UnibootOxlintConfig