Prettier与ESLint:在VSCode中实现代码格式化与校验
发布时间 - 2025-12-06 00:00:00 点击率:次Prettier负责代码格式化,ESLint负责逻辑与质量检查;需关闭ESLint中格式规则、配置VSCode保存时自动格式化与修复,并通过项目配置文件统一团队规范。
在 VSCode 中同时用好 Prettier 和 ESLint,关键不是“谁替代谁”,而是“谁管格式、谁管逻辑”——Prettier 负责统一代码样式(缩进、引号、换行等),ESLint 负责检查代码质量与潜在问题(如未使用变量、错误的 Promise 用法等)。两者配合得当,编辑器保存时就能自动格式化 + 校验报错,开发体验更顺。
明确分工:Prettier 做格式,ESLint 做规则
Prettier 是“不接受商量”的格式化工具,它不支持配置“是否加分号”这类风格争议项(除非关掉整个规则);ESLint 则是可高度定制的静态检查器,能覆盖语法、逻辑、安全等多维度。若让 ESLint 同时管格式,容易和 Prettier 冲突(比如一个要分号、一个不要),导致保存后反复格式化或报错不消失。
- 关闭 ESLint 中所有与格式相关的规则(如 semi、quotes、comma-dangle),推荐直接使用 eslint-config-prettier 来一键禁用冲突规则
- 保留 ESLint 的业务逻辑类规则(如 no-unused-vars、react-hooks/exhaustive-deps、no-async-promise-executor)
- Prettier 配置保持精简,通常只需指定 semi、singleQuote、tabWidth 等基础项,其余交给默认值
VSCode 设置:确保保存时自动执行
VSCode 默认不会在保存时同时触发 Prettier 格式化和 ESLint 修复,需手动配置对齐行为:
- 安装官方扩展:Prettier(by Esben Petersen)和 ESLint(by Dirk Baeumer)
- 在 VSCode 设置(settings.json)中启用保存时格式化,并指定默认格式化工具为 Prettier:
"editor.formatOnSave": true
"editor.defaultFormatter": "esbenp.prettier-vscode" - 允许 ESLint 在保存时自动修复**可修复的问题**(如引号、空格等已被禁用的格式规则除外):
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } - 如项目含多种语言(如 .vue 或 .ts),建议按语言单独设置格式化器,避免误处理
项目级配置:靠配置文件统一团队行为
仅靠 VSCode 设置无法保证所有开发者一致,必须把规则落到项目配置文件中:
- 根目录放 .prettierrc(或 prettier.config.js),定义 Prettier 行为
- 用 .eslintrc.cjs(或 .js/.json)配置 ESLint,继承 eslint:recommended + plugin:reac
t/recommended(如需)+ prettier(即 eslint-config-prettier) - 加 .eslintignore 排除 node_modules、dist 等无需检查的目录
- 可选:添加 package.json 中的脚本,如 "lint": "eslint src/" 和 "format": "prettier --write src/",方便 CI 或手动执行
常见问题:为什么保存没反应?或提示“ESLint couldn’t determine the plugin”?
多数问题出在插件未正确加载或配置路径不对:
- 确认项目本地安装了 prettier、eslint、eslint-config-prettier(及所需插件如 @typescript-eslint/eslint-plugin),而非仅全局安装
- VSCode 工作区必须打开的是项目根目录(含 node_modules 和配置文件),否则扩展找不到本地依赖
- 检查 ESLint 输出面板(Ctrl+Shift+U → 选择 ESLint),看是否有加载失败或路径警告
- 如果用了 TypeScript,确保 @typescript-eslint/parser 和对应插件已配置,且 parserOptions.project 指向正确的 tsconfig.json
基本上就这些。配好一次,后续开发就几乎不用操心格式和低级错误,专注写逻辑本身。
# vscode
# vue
# react
# js
# json
# node
# typescript
# 工具
# 配置文件
# 常见问题
# format
# 继承
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Android利用动画实现背景逐渐变暗
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
JavaScript如何实现类型判断_typeof和instanceof有什么区别
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
网页设计与网站制作内容,怎样注册网站?
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
创业网站制作流程,创业网站可靠吗?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何在云虚拟主机上快速搭建个人网站?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Laravel如何实现文件上传和存储?(本地与S3配置)
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
PHP 500报错的快速解决方法
Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
nginx修改上传文件大小限制的方法
WordPress 子目录安装中正确处理脚本路径的完整指南
高防服务器租用如何选择配置与防御等级?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Python高阶函数应用_函数作为参数说明【指导】
JS弹性运动实现方法分析
Angular 表单中正确绑定输入值以确保提交与验证正常工作
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Laravel怎么清理缓存_Laravel optimize clear命令详解
如何快速打造个性化非模板自助建站?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
Laravel中的Facade(门面)到底是什么原理
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Python并发异常传播_错误处理解析【教程】
Python文本处理实践_日志清洗解析【指导】
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
Python结构化数据采集_字段抽取解析【教程】
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel如何使用Telescope进行调试?(安装和使用教程)


t/recommended(如需)+ prettier(即 eslint-config-prettier)