ESLint ​

安装 ​

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

需 ESLint 9+(Flat Config)。包内已带常用 plugin 与 parser(@typescript-eslint/*、eslint-plugin-vue、vue-eslint-parser、eslint-plugin-perfectionist、eslint-plugin-unicorn、eslint-plugin-jsonc、eslint-plugin-yml、eslint-plugin-n、eslint-plugin-import-x、eslint-plugin-pnpm、eslint-plugin-unused-imports、globals 等),按预设默认行为生效;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(用于规则去重等内部协作),无需额外配置。