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

推荐订阅源

Application and Cybersecurity Blog
Application and Cybersecurity Blog
The Register - Security
The Register - Security
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
量子位
C
Check Point Blog
博客园 - 【当耐特】
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Engineering at Meta
Engineering at Meta
Recorded Future
Recorded Future
The Last Watchdog
The Last Watchdog
博客园 - Franky
N
Netflix TechBlog - Medium
Webroot Blog
Webroot Blog
A
About on SuperTechFans
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
D
Docker
S
Security Affairs
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
V2EX - 技术
V2EX - 技术
Jina AI
Jina AI
Help Net Security
Help Net Security
L
LangChain Blog
P
Proofpoint News Feed
The Cloudflare Blog
WordPress大学
WordPress大学
Google DeepMind News
Google DeepMind News
Schneier on Security
Schneier on Security
Recent Announcements
Recent Announcements
Attack and Defense Labs
Attack and Defense Labs
云风的 BLOG
云风的 BLOG
V
Vulnerabilities – Threatpost
Microsoft Security Blog
Microsoft Security Blog
H
Heimdal Security Blog
P
Proofpoint News Feed
O
OpenAI News
H
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
爱范儿
爱范儿
Security Archives - TechRepublic
Security Archives - TechRepublic

程沛权 - 养了三只猫

声画共生:黄贯中的摇滚美学宇宙 适用于 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