【实践】利用 Prettier 格式化打包后的代码?修 BUG 的隐藏神器!

在日常开发中,我们习惯用 Prettier 统一源码风格。但你是否想过——它还能用来“抢救”打包后的压缩代码?当线上出问题、控制台报错指向一行上万字符的 app.xxx.js 时,Prettier 可能就是你快速定位 Bug 的“救命稻草”!

本文将手把手教你如何使用 Prettier 对当前项目目录下的所有支持文件进行原地格式化(in-place formatting),并深入讲解其作用、配置方式、注意事项及工程化集成建议。


一、Prettier 是什么?有什么用?

✅ 什么是 Prettier?

Prettier 是一个有主见的代码格式化工具(opinionated code formatter),支持 JavaScript、TypeScript、CSS、SCSS、HTML、Vue、React、JSON、Markdown 等数十种语言。它的核心理念是:

“你不用争论代码风格,我来替你决定。”

它通过解析代码生成 AST(抽象语法树),再按统一规则重新输出,彻底消除人为格式差异

✅ 为什么需要它?

  • 统一团队代码风格:避免因个人习惯导致的 PR 争论(比如单引号 vs 双引号)。
  • 提升代码可读性:自动换行、对齐、缩进,让代码结构更清晰。
  • 减少低级错误:例如忘记分号、多余逗号等。
  • 节省时间:不再手动调整格式,专注业务逻辑。

二、如何用 Prettier 格式化“原目录”下的所有文件?

所谓“原目录格式化”,指的是直接修改当前项目目录(包括子目录)中的源文件,而不是输出到控制台或新文件。这是日常开发中最常用的场景。

🔧 步骤 1:安装 Prettier

推荐在项目中本地安装(而非全局),以确保团队成员使用相同版本:

npminstall--save-dev prettier

💡 如果你尚未初始化 npm 项目,先运行npm init -y

🔧 步骤 2:执行格式化命令

在项目根目录下运行:

npx prettier --write.
命令解析:
  • npx:调用本地 node_modules 中的 Prettier。
  • --write关键参数!表示直接覆盖原文件(即“原地修改”)。
  • .:表示当前目录及其所有子目录。

✅ 执行后,Prettier 会自动遍历所有它支持的文件类型(如.js,.ts,.vue,.css,.json等),并按规则格式化。


三、进阶用法:精确控制格式化范围

🎯 场景 1:只格式化特定类型文件

# 仅格式化 JS/TS/JSX/TSX 文件npx prettier --write"**/*.{js,ts,jsx,tsx}"

🚫 场景 2:忽略某些目录或文件

方法一:使用.prettierignore文件(推荐)

在项目根目录创建.prettierignore,内容如下:

# .prettierignore node_modules/ dist/ build/ coverage/ *.min.js .env

类似.gitignore,Prettier 会自动跳过这些路径。

方法二:配合.gitignore

如果你希望 Prettier 忽略 Git 已忽略的文件,可加--ignore-path参数:

npx prettier --write.--ignore-path .gitignore

四、配置 Prettier:自定义格式规则

虽然 Prettier “有主见”,但它也允许你通过配置文件微调行为。

创建配置文件(任选一种格式):

方式 1:.prettierrc(JSON 格式,最常用)
{"semi":true,"singleQuote":true,"tabWidth":2,"trailingComma":"es5","printWidth":80,"bracketSpacing":true,"arrowParens":"avoid"}
常用配置项说明:
配置项作用默认值
semi是否在语句末尾加分号true
singleQuote使用单引号代替双引号false
tabWidth缩进空格数2
trailingComma对象/数组末尾是否加逗号"es5"
printWidth单行最大字符数(超长自动换行)80

完整配置参考:Prettier 官方文档 - Options


五、⚠️ 重要注意事项

  1. --write会直接修改文件!

    • 建议在执行前提交 Git或确认已备份。
    • 可先用--check模式预览哪些文件会被修改:
      npx prettier --check.
  2. 不要格式化非源码文件

    • node_modules、编译产物(dist/)、配置文件(.env)等,务必通过.prettierignore排除。
  3. 与 ESLint 冲突?

    • Prettier 负责格式(空格、换行),ESLint 负责代码质量(未使用变量、潜在 bug)。
    • 推荐使用eslint-config-prettier关闭 ESLint 中与 Prettier 冲突的规则。

六、工程化集成建议

✅ 集成到 VS Code

  1. 安装插件:Prettier - Code formatter
  2. 设置保存时自动格式化:
    // settings.json{"editor.formatOnSave":true,"editor.defaultFormatter":"esbenp.prettier-vscode"}

✅ 集成到 Git Hooks(提交前自动格式化)

使用 Husky + lint-staged:

npminstall--save-dev husky lint-staged npx huskyinstallnpx huskyadd.husky/pre-commit"npx lint-staged"

package.json中添加:

{"lint-staged":{"*.{js,ts,jsx,tsx,vue,css,scss,json,md}":"prettier --write"}}

这样,每次git commit时,只会格式化本次提交的文件,高效又安全!


七、总结

问题解决方案
如何格式化整个项目?npx prettier --write .
如何避免格式化无关文件?配置.prettierignore
如何自定义格式规则?创建.prettierrc
如何防止误改代码?git commit,或用--check预览
如何自动化?VS Code 保存格式化 + Git hooks

Prettier 不仅是一个工具,更是一种工程规范。花 5 分钟配置好它,未来能为你和团队节省数百小时的代码审查与格式争论时间。


附:官方资源

  • 官网:https://prettier.io
  • GitHub:https://github.com/prettier/prettier
  • Playground(在线体验):https://prettier.io/playground/

欢迎点赞、收藏、评论交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1167880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot基于微信小程序的考研资源共享平台的设计与实现

背景分析随着考研竞争日益激烈,考生对高质量学习资源的需求急剧增长。传统资源获取方式存在信息分散、更新滞后、付费门槛高等痛点。微信小程序凭借10亿级用户基础与即用即走的特性,成为资源聚合的理想载体。SpringBoot框架的快速开发能力与微服务架构优…

python基于django水上乐园售票管理系统

目录基于Django的水上乐园售票管理系统摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Django的水上乐园售票管理系统摘要 该系统采用Django框架开发,旨在实现水…

本科生开题报告PPT规范

摘要: 本贴描述本科生开题报告 PPT 的若干规范. 1. 基本风格 采用浅色背景模板图片为主, 文字为辅字号不能小于 20 号每页不能有大段的话, 只能分成若干点,每点不超过 2 行具体 (可以用例子), 不能泛泛而谈 (计算机发展, AI 发展之类废话) 2. 对题目的详细解释 开题…

python基于django人口户籍管理系统设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着城市化进程的加快和人口流动性的增强,传统的人工户籍管理方式已难以满足现代社会的需求。为提高户籍管…

springboot基于微信小程序的丽江市旅游分享平台

背景分析丽江市作为中国著名的旅游目的地,拥有丰富的自然景观和文化遗产,吸引了大量国内外游客。传统的旅游信息获取方式存在信息分散、更新不及时等问题,游客难以全面了解实时旅游动态和个性化推荐内容。微信小程序因其无需下载安装、使用便…

python基于django付费自习室系统的设计与实现

目录基于Django的付费自习室系统的设计与实现关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Django的付费自习室系统的设计与实现 随着教育需求的增长和学习效率要求的提升&am…

python基于django助农商城设计与实现

目录摘要关键词关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着互联网技术的快速发展,电子商务在农业领域的应用日益广泛。基于Django框架的助农商城系统旨在为…

python基于django助学贷款平台

目录基于Django的助学贷款平台摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Django的助学贷款平台摘要 助学贷款平台基于Django框架开发,旨在为学生提供便捷的…

python基于django在线C语言教学系统的设计与实现

目录摘要关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着信息技术的快速发展,在线教育已成为现代教育的重要组成部分。基于Django框架的在线C语言教学系统旨在…

《创业之路》-863-基业长青 =为企业基业长青的终极实战操作系统,首次将 「四阶价值流 × 商业模式画布 × 产品生命周期 × 创新 × 技术曲线 × 第二增长曲线 × 上中下游生态」 七大工具深度

企业基业长青的终极实战操作系统,我们首次将 「四阶价值流 商业模式画布 产品生命周期 创新 技术曲线 第二增长曲线 上中下游生态」 七大工具深度耦合,形成可量化、可执行、可预警的企业生存指南。框架核心逻辑:基业长青 用生态控制力…

《创业之路》-864-企业基业长青终极指南:无生态构建版(聚焦核心能力突围)

企业基业长青终极指南:无生态构建版(聚焦核心能力突围)核心逻辑:基业长青 在生态夹缝中卡位价值流关键点 用技术曲线预判生态变化 在生命周期坠毁前切换赛道 无需自建生态,但必须成为生态中“不可替代的零件”一、致…

杰理之概率出现一边耳机没有关机提示音【篇】

user_send_cmd_prepare(USER_CTRL_PAGE_CANCEL, 0, NULL);

【RDMA】infiniband IB 流控机制

InfiniBand通过链路层流控与QoS机制,确保了数据的“零丢包”可靠传输。 流量控制:平衡数据传输速率,避免多数据同时发送收端缓冲区溢出。 QoS机制:进一步保证了网络服务的整体质量,根据数据流的不同需求来分配和管理网…

杰理之同步关机时添加判断,避免提示音被打断或者重复播放关机提示音【篇】

同步关机时添加判断,避免提示音被打断或者重复播放关机提示音 if(app_var.goto_poweroff_flag 2){task_switch(“idle”, ACTION_IDLE_POWER_OFF);return; }

失业期PHP程序员今日份将“结果导向”转为“过程导向”的庖丁解牛

“将‘结果导向’转为‘过程导向’” 是失业期 PHP 程序员 打破焦虑循环、重建行动力的核心认知切换。它不是放弃目标,而是 将不可控的“结果”(如拿到 offer)转化为可控的“过程”(如每日微成长)。一、为什么必须切换…

随机森林:原理、参数与适用场景

随机森林:原理、参数与适用场景 随机森林(Random Forest)模型 一、 随机森林的底层逻辑:为什么“多棵树”比“一棵树”好? 二、 随机森林的两大“随机性”:核心创新点 1. 样本随机:Bootstrap抽样(有放回抽样) (1) 抽样规则 (2) 数学推导(可选,新手可跳过) (3…