nodejs 下使用 Prettier 美化单个 JS 文件(完整教程)

nodejs 下使用 Prettier 美化单个 JS 文件(完整教程)

一、使用场景说明

很多前端打包后的文件类似:

复制代码
7165.89f0dbce.js

特点:

  • 文件名带 hash
  • 压缩 / 混淆
  • 不适合直接阅读

目标:

在不修改原文件的情况下,美化 JS,并生成一个可读的新文件 pretty.js


二、环境准备(一次即可)

1️⃣ 安装 Node.js 和 npm

bash 复制代码
sudo apt update
sudo apt install nodejs npm -y

验证:

bash 复制代码
node -v
npm -v

能看到版本号即可。


三、安装 Prettier(全局)

正确方式:

bash 复制代码
sudo npm install -g prettier

验证是否成功:

bash 复制代码
prettier -v

输出版本号说明安装完成。


四、美化单个 JS 文件(核心步骤)

原始文件

bash 复制代码
7165.89f0dbce.js

执行美化并生成新文件

bash 复制代码
prettier \
  --stdin-filepath 7165.89f0dbce.js \
  7165.89f0dbce.js \
  > pretty.js

结果说明

文件 说明
7165.89f0dbce.js 原文件(完全不动)
pretty.js 美化后的可读版本

✅ 推荐用于 学习 / 代码分析 / 排错


五、为什么要用 --stdin-filepath?(重点)

如果直接这样:

bash 复制代码
prettier 7165.89f0dbce.js > pretty.js

可能会出现:

  • 格式规则不生效
  • 箭头函数 / 模块识别异常

正确原因

--stdin-filepath 用来告诉 Prettier:

"这是一个 JS 文件,请按 JS 规则解析"

✔️ 强烈推荐用于压缩 JS


六、提升可读性的常用参数(可选)

宽一点,少换行

bash 复制代码
prettier \
  --stdin-filepath 7165.89f0dbce.js \
  --print-width 120 \
  7165.89f0dbce.js \
  > pretty.js

两个空格缩进

bash 复制代码
prettier \
  --stdin-filepath 7165.89f0dbce.js \
  --tab-width 2 \
  7165.89f0dbce.js \
  > pretty.js

七、一键脚本(推荐)

新建脚本

bash 复制代码
nano beautify-js.sh

内容

bash 复制代码
#!/bin/bash

INPUT="7165.89f0dbce.js"
OUTPUT="pretty.js"

prettier \
  --stdin-filepath "$INPUT" \
  --print-width 120 \
  "$INPUT" \
  > "$OUTPUT"

echo "✔ 已生成美化文件: $OUTPUT"

赋予执行权限

bash 复制代码
chmod +x beautify-js.sh

使用

bash 复制代码
./beautify-js.sh

八、如果 Prettier 美化效果不理想(备用)

针对极度混淆代码:

bash 复制代码
sudo npm install -g js-beautify
js-beautify 7165.89f0dbce.js -o pretty.js

九、常见问题排查

❌ apt 安装失败

bash 复制代码
sudo apt install prettier

原因:

Prettier 是 Node 工具,不在 apt 仓库

✔️ 正解:npm install -g prettier


❌ 命令没反应

  • 确认 prettier -v
  • 确认当前目录有 JS 文件

十、总结(推荐做法)

安全美化(不破坏原文件)

bash 复制代码
prettier --stdin-filepath 7165.89f0dbce.js 7165.89f0dbce.js > pretty.js

适合:

  • 打包文件分析
  • 源码学习
  • 线上问题排查
相关推荐
SilentSamsara17 小时前
Python 环境搭建完整指南:从下载安装到运行第一个程序
开发语言·python
小短腿的代码世界17 小时前
Qt文件系统与IO深度解析:从QFile到异步文件操作
开发语言·qt
harder32118 小时前
RMP模式的创新突破
开发语言·学习·ios·swift·策略模式
jinanwuhuaguo18 小时前
OpenClaw工程解剖——RAG、向量织构与“记忆宫殿”的索引拓扑学(第十三篇)
android·开发语言·人工智能·kotlin·拓扑学·openclaw
Rust研习社19 小时前
使用 Axum 构建高性能异步 Web 服务
开发语言·前端·网络·后端·http·rust
豹哥学前端20 小时前
用猜数字游戏,一口气掌握 JavaScript 核心知识点(附完整代码)
前端·javascript
忆往wu前20 小时前
从0到1一步步拆解搭建,梳理一个 Vue3 简易图书后台全开发流程
前端·javascript·vue.js
淘矿人20 小时前
从0到1:用Claude启动你的第一个项目
开发语言·人工智能·git·python·github·php·pygame
cany100020 小时前
C++ -- 模板的声明和定义
开发语言·c++
澈20720 小时前
深耕进阶 Day1:C 与 C++ 核心差异 + C++ 入门基石
c语言·开发语言·c++