惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
G
Google Developers Blog
MyScale Blog
MyScale Blog
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Proofpoint News Feed
D
Docker
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Help Net Security
Help Net Security
Google DeepMind News
Google DeepMind News
L
LINUX DO - 最新话题
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
Forbes - Security
Forbes - Security
MongoDB | Blog
MongoDB | Blog
Attack and Defense Labs
Attack and Defense Labs
Webroot Blog
Webroot Blog
A
About on SuperTechFans
Schneier on Security
Schneier on Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
Microsoft Azure Blog
Microsoft Azure Blog
F
Fortinet All Blogs
IT之家
IT之家
The Last Watchdog
The Last Watchdog
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog
Project Zero
Project Zero
B
Blog
Recorded Future
Recorded Future
博客园_首页
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
SegmentFault 最新的问题
Security Archives - TechRepublic
Security Archives - TechRepublic
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hacker News: Front Page
T
Threatpost
H
Heimdal Security Blog
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog

程沛权 - 养了三只猫

声画共生:黄贯中的摇滚美学宇宙 适用于 Oxlint 与 Oxfmt 的 Oxc 优先工作流 Vue Picture Cropper 发布 1.x 版本 讲一讲背后的设计理念 年终总结:2025 年的一些回顾和 2026 年的一些小规划 Obsidian x 飞牛 NAS:打造免费的跨平台笔记同步与备份方案 解决 better-sqlite3 连接 SQLite 时报错 Could not locate the bindings file 本色十年 记录一次 ERR_INCOMPLETE_CHUNKED_ENCODING 的问题排查 使用 remark-directive 为 Unifiedjs 提供 Markdown 视频语法的解析 干净的 TypeScript 项目在编译时报错 Cannot find module 'undici-types' 的原因和解决 macOS 基于 Android Studio 修改模拟器 Hosts 给猫儿子的新年礼物 它很喜欢! 年终总结:2023 年的一些回顾和 2024 年的一些小规划 千元预算组装入门 NAS 设备 分享 NAS 的硬件基础知识 我写了一本书《前端工程化:基于 Vue.js 3.0 的设计与实践》 想分享一下它背后的故事 Git的选择性合并操作笔记:合并某个版本或某个提交 年终总结:2022 年的一些回顾和 2023 年的一些小规划 知乎收藏夹助手:自动化将专栏的文章添加到收藏夹 用Vite更简单的解决Vue3项目的预渲染问题 Pinia怎么用?Vue3全局状态的管理工具Pinia教程 每天吃什么?上班带什么饭?程序员教你做菜啦!
适用于 ESLint V9 的现代化扁平化配置
chengpeiquan · 2025-03-13 · via 程沛权 - 养了三只猫

ESLint v9.0.0 是 ESLint 的一个主要版本,它有几个重大变化,其中最大的变化是其配置文件和插件生态系统的使用,可以通过官方网站的 迁移到 v9.x 文档了解如何迁移。

这里有一个关于 ESLint V9 的扁平化配置的 npm 包,内置了一些个人常用的 ESLint 配置,这也是我在 GitHub 上发布的一个开源项目。如果它对您有帮助,请 给它一个 Star

一款现代化的扁平 ESLint 配置,适用于 ESLint v9 和 v10 ,由 @chengpeiquan 精心打造。

⚡ 使用方法

使用此 ESLint 配置仅需三步:

  1. 安装依赖(参考:🚀 安装)
  2. 添加 ESLint 配置文件(参考:📂 配置文件)
  3. 在 VS Code 的 settings.json 启用自动 Lint(参考:🛠 VS Code 配置)

这个快速指南可以作为入门辅助,避免遗漏关键步骤 🚀 。

🚀 安装

使用常用的包管理器安装该包:

注意: 支持 ESLint 9.x10.x,并且需要 TypeScript 版本 >= 5.0.0

如果使用的是 pnpm,建议在项目根目录添加 .npmrc 文件,并包含以下配置,以更顺利地处理 peer 依赖:

如果仍在使用 ESLint v8,请参考旧版(已不再维护)包:@bassist/eslint

📂 配置文件

在项目根目录创建 eslint.config.js 文件:

然后在 package.json 中添加 "type": "module" :

运行 npm run lint 以检查代码,或运行 npm run lint:inspectorhttp://localhost:7777 查看可视化的 ESLint 配置。

Bun 可以直接加载 eslint.config.ts 。如果你通过 Node.js 运行 ESLint,建议改用 eslint.config.mjs,或者按照 ESLint 文档完成额外的设置

🧩 JSONC 预设

如果希望 ESLint 直接检查 JSON 系列文件,可以使用 jsonc 预设:

jsonc 的默认行为:

  • 支持 .json.jsonc.json5
  • 默认递归排序对象 key(jsonc/sort-keys
  • 默认忽略 package.json,让包清单 key 排序继续交给格式化流程处理

如果你在 VS Code 里通过 ESLint 扩展做校验,并且手动设置了 eslint.validate,记得把 jsonjsonc 也加进去。

如果需要,也可以在项目里覆盖默认行为:

✅ 类型安全的配置

为了增强类型安全性,可以使用 defineFlatConfig:

🛠 VS Code 配置

在 VS Code 工作区的 settings.json 添加以下配置,以启用自动 Lint 修复:

关于 prettier.configPath 请查看 格式化工具 部分。

📘 API 参考

defineFlatConfig

定义 ESLint 配置,可选支持 Prettier 和 Tailwind CSS。

API 类型声明:

选项类型声明:

createGetConfigNameFactory

createGetConfigNameFactory 是一个灵活的工具函数,用于生成 ESLint 配置命名工具。它可以快速拼接配置名称,确保命名空间一致,并便于组织和管理复杂的规则集。

API 类型声明:

使用示例:

为什么要使用它?

  • 一致性:强制执行清晰统一的配置命名模式。
  • 灵活性:允许为不同项目或范围自定义前缀。
  • 简化管理:便于组织和浏览大型 ESLint 配置。

这个工具在构建可复用的 ESLint 配置或维护复杂项目的规则集时尤其有用。

📦 导出的配置

这些是一些常用的配置,如果有额外需求,欢迎提交 PR!

语言支持

框架支持

格式化工具

格式化规则默认启用,不会单独导出。如需自定义配置,请通过 defineFlatConfig API 的 options 传入。

  • Prettier :
    • 默认会读取 .prettierrc.prettierignore 的内容,并添加到 ESLint 规则中。
    • 如果预期的配置文件不存在,则会使用 内置的 Prettier 规则作为兜底规则。
    • 非以上配置文件并且不喜欢默认规则时,可以通过 defineFlatConfig 的 options.prettierRules 将完整配置传递进来优先作为 ESLint 规则使用
  • Tailwind CSS :
    • 使用 eslint-plugin-better-tailwindcss,让 Tailwind CSS v3 和 v4 项目共用同一套 class linting。
    • Monorepo、自定义 CSS 入口或自定义 class selector,可通过 options.tailwindcssSettings 传递。

其它

📚 迁移指南

  • 扁平化配置(Flat Configs)不支持 ESLint 8.x 以下的版本。
  • --ext CLI 选项已被移除 (#16991) 。

📝 发布日志

详细更新内容请参考 CHANGELOG