ESLint

安装

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

ESLint 9+(Flat Config)。包内已带常用 plugin 与 parser(@typescript-eslint/*eslint-plugin-vuevue-eslint-parsereslint-plugin-perfectionisteslint-plugin-unicorneslint-plugin-jsonceslint-plugin-ymleslint-plugin-neslint-plugin-import-xeslint-plugin-pnpmeslint-plugin-unused-importsglobals 等),按预设默认行为生效;eslint 本体由项目安装

使用

在仓库根目录放 eslint.config.mjs(或 eslint.config.js,需 ESM):

js
// eslint.config.mjs
import { defineConfig } from '@uniboot/eslint-config'

export default await defineConfig()

defineConfig 的签名为:接收可选的额外 Flat 配置数组,返回合并后的配置 Promise(解析为 ESLint 所需的 flat 数组结构)。

js
import { defineConfig } from '@uniboot/eslint-config'

export default await defineConfig([
  {
    rules: {
      'no-console': 'off',
    },
  },
  {
    ignores: ['public/**', 'lib/**/vendor/**'],
  },
])

预设里大约包含什么

@uniboot/eslint-config 在内部按以下顺序组入 Flat 配置片段:

  1. vue — Vue SFC 规则与 parser
  2. javascript — JS 基线
  3. ignores — 默认忽略(dist/node_modules/ 等)
  4. typescript — TS 规则与 parser
  5. jsonc — JSON / JSONC / JSON5
  6. node — Node 平台规则
  7. perfectionist — 排序规则(imports、object keys 等)
  8. unicorn — 现代 JS 规则集
  9. yaml — YAML lint(yaml-eslint-parser
  10. pnpm — pnpm workspace 与 catalog 相关
  11. customConfig — 仓库内自定义片段
  12. 用户传入的额外数组(最后追加,便于覆盖)

具体规则集以源码 uniboot-configs/packages/lint-configs/eslint-config 为准;升级主版本时会变。

常改项

  • 仅关闭某类文件:在传入 defineConfig 的数组里增加带 ignores 的片段。
  • 与 Prettier 冲突时:预设中已做常见集成;若仍报格式类重复,可检查本项目的 prettier 版本与 eslint-config-prettier 是否由同一套版本约束。
  • 与 Oxlint 协作:@uniboot/eslint-config 在依赖里包含 @uniboot/oxlint-config(用于规则去重等内部协作),无需额外配置。