Loading…
此 JavaScript 压缩器的主要特性
- 即时、浏览器内 JS 压缩(无需上传文件至服务器)
- 移除注释并压缩不必要的空格/换行
- 基于 AST 的压缩,类似 Terser(常量折叠、安全条件下的死代码删除)
- 通过 API 或构建集成可选标识符混淆和高级标志
- 支持现代 JavaScript (ES2015+)、经典脚本和简单模块输出
- 一键复制或下载压缩后的 JavaScript
- 使用与 JavaScript 格式化器相同的核心组件:一键切换格式化和压缩输出
- 100% 客户端处理,确保最高隐私
🛠️ 如何压缩 JavaScript for javascript-minifier
1
粘贴或上传您的 JS
将 .js/.mjs 文件拖入编辑器或直接粘贴 JavaScript。此工具适用于单个脚本、工具文件和小型捆绑包。
2
选择压缩模式
使用与 JavaScript 格式化器相同的组件:切换到压缩操作以获取压缩输出而非格式化代码。
3
运行压缩器
您的代码被解析为 AST,注释和多余空格被去除,并应用安全压缩过程以减少捆绑包大小。
4
复制或下载结果
从输出编辑器复制压缩后的 JavaScript 或下载为 .min.js 文件,并将其包含在您的 HTML、CDN 或构建输出中。
技术规格
核心转换(安全默认设置)
保守的默认设置旨在保持运行时行为,同时显著减小代码大小。
| 操作 | 已应用 | 备注 |
|---|---|---|
| 移除行和块注释 | ✅ | 可通过配置/API保留许可证注释(/*! ... */) |
| 折叠空白和换行 | ✅ | 在语义安全处规范化空白;保留字符串和正则表达式内容 |
| 常量折叠和简单内联 | ✅ | 仅在结果可证明等价时执行 |
| 死代码消除 | ✅ | 移除常量传播后不可达的分支 |
| 标识符混淆 | ✅ 可选 | 缩短变量和函数名;可通过高级选项/API配置 |
| 移除调试辅助工具(console/debugger) | ✅ 可选 | 当生产环境不依赖控制台输出时可启用 |
安全与兼容性控制
高级选项(主要通过构建工具/API暴露)可调节代码压缩的激进程度
| 选项 | 默认值 | 说明 |
|---|---|---|
| ECMA目标版本 | 2020 | 控制输出语法和部分压缩规则 |
| 模块与脚本模式 | 脚本 | 为ESM包启用模块/顶级优化 |
| 保留函数名/类名 | false | 保留名称以改善堆栈追踪或依赖注入框架 |
| Safari10/旧版兼容 | 关闭 | 仅针对特定旧版引擎时启用 |
| 顶级作用域 | false | 允许丢弃未使用的顶级绑定以实现高级摇树优化 |
典型体积缩减
节省空间大小因原始格式、注释密度和死代码数量而异
| 输入样式 | 仅压缩 | 压缩+混淆(激进) |
|---|---|---|
| 大量注释和空格 | 35%–55% | 50%–70% |
| 适度格式化的应用代码 | 20%–35% | 35%–55% |
| 已压缩代码 | 5%–15% | 10%–25% |
生产构建的CLI替代方案
对于完整应用和多文件项目,将压缩集成到您的CI/CD流水线中。
Node.js
Terser(常见情况)
npx terser src/app.js -o dist/app.min.js -c ecma=2020,passes=2 -m两次压缩传递加上标识符混淆,实现强力体积缩减。
保留名称和移除控制台的Terser
npx terser src/app.js -o dist/app.min.js -c passes=2,drop_console=true -m reserved=["React","ReactDOM"] --keep-fnames保护重要全局变量,移除控制台调用,并保留函数名以便调试。
Linux/macOS/Windows
esbuild(极速)
npx esbuild src/app.js --minify --target=es2018 --outfile=dist/app.min.js在单个极速步骤中打包和压缩。
SWC(基于Rust)
npx swc src -d dist --minify使用高性能Rust引擎进行转译和压缩。
常见用例
网页性能与核心Web指标
- 减少JavaScript传输大小以加快LCP和TTI
- 部署前去除调试注释和日志记录
- 在gzip/brotli压缩前缩小客户端包
/* 仅在构建时存在的注释,在压缩输出中会被移除 */CI/CD与发布自动化
- 在构建流水线的最后一步压缩JS
- 为CDN准备小巧、缓存友好的包
- 与HTML/CSS压缩器一起生成生产就绪的资源
小部件、嵌入与实验
- 通过标签管理器部署紧凑代码片段
- 在第三方页面中嵌入压缩后的小部件
- 对关键脚本尝试不同的压缩策略
❓ Frequently Asked Questions
压缩JavaScript会改变代码运行方式吗?
在安全默认设置下,运行时行为应保持相同。但若使用激进选项(如顶级优化、标识符混淆或移除控制台调用),当代码依赖名称、副作用或日志记录时可能影响行为。请始终保留未压缩版本并对压缩构建运行测试。
此工具是否直接处理TypeScript或JSX?
本压缩器针对纯JavaScript。对于TypeScript或JSX,需先转译为JavaScript(通过SWC、esbuild或Babel),再压缩生成的JS代码。
我的JavaScript代码会上传到服务器吗?
不会。所有处理均在浏览器中使用客户端代码完成。源代码不会发送至任何远程服务器,非常适合私有/专有脚本。
我的JavaScript文件最大支持多大?
为保障浏览器流畅体验,本在线工具建议文件大小约1MB以内。更大规模的打包文件和重复压缩操作更适合通过集成到构建流程中的CLI工具处理。
格式化与压缩有什么区别?
格式化使代码更易读(统一缩进与间距),压缩使代码更小(移除空白符、注释和冗余代码)。本工具共享相同核心组件:需可读性时使用格式化功能,需生产环境打包时使用压缩功能。
Pro Tips
Best Practice
在打包工具中定义NODE_ENV=production(或等效设置)可解锁许多库中的额外死代码剔除功能。
Best Practice
在版本控制中保留未压缩源码(大型应用需包含源映射),生产环境仅提供压缩后资源。
Best Practice
混淆时使用保留名称以保护挂载在window或globalThis上的公共API。
Best Practice
在CDN或服务器层级将压缩与gzip或brotli结合使用,实现叠加的体积优化效果。
Additional Resources
Other Tools
- CSS 美化器
- HTML 美化器
- JavaScript 美化器
- PHP 美化器
- 颜色选择器
- 精灵图提取器
- Base64 解码器
- Base64 编码器
- C# 格式化器
- CSV 格式化器
- Dockerfile Formatter
- Elm 格式化器
- ENV 格式化器
- Go 格式化器
- GraphQL 格式化器
- HCL 格式化器
- INI 格式化器
- JSON 格式化器
- LaTeX 格式化器
- Markdown 格式化器
- Objective-C 格式化器
- Php Formatter
- Proto 格式化器
- Python 格式化器
- Ruby 格式化器
- Rust 格式化器
- Scala 格式化器
- Shell 脚本格式化器
- SQL 格式化器
- SVG 格式化工具
- Swift 格式化工具
- TOML 格式化工具
- Typescript Formatter
- XML 格式化工具
- YAML 格式化工具
- Yarn 格式化工具
- CSS 压缩器
- Html Minifier
- JSON 压缩器
- XML 压缩器
- HTTP 头部查看器
- PDF 转文本
- 正则表达式测试器
- 搜索引擎排名检查器
- Whois 查询