功能简介
压缩(minify)会删掉浏览器运行代码时用不到的一切:空白、换行、注释和长名字。文件越小下载越快,能改善页面加载速度和 Core Web Vitals 指标,在移动网络下尤其明显。
这个工具用 Terser 压缩 JavaScript,它也是 webpack、Rollup 和 Vite 使用的压缩器;用 CSSO 压缩 CSS,CSSO 还会重组样式表:缩短颜色(#ffffff 变成 #fff),去掉多余的单位和值(0px 0px 变成 0),合并选择器或声明相同的规则。
使用方法
- 把代码粘贴到「输入」框,或把
.js、.css文件拖进去,也可以点「示例」。 - 选择 JavaScript 或 CSS。
- JavaScript 的「缩短变量名」会把局部变量和参数改成单个字母,导出的名称和全局名称不会改。
- CSS 的「合并重复规则」会把声明相同的规则合在一起。
- 复制或下载结果。输入框和输出框下方的大小统计能看出省了多少。
如果 JavaScript 有语法错误,错误提示会给出行号和列号,点击即可跳过去。
示例
// Sum the price of every item
export function cartTotal(items, discountPercent = 0) {
const subtotal = items.reduce(function (sum, item) {
return sum + item.price * item.quantity
}, 0)
return subtotal * (1 - discountPercent / 100)
}
会变成
export function cartTotal(t,r=0){return t.reduce(function(t,r){return t+r.price*r.quantity},0)*(1-r/100)}
什么时候用
适合临时的一次性需求:放到 CDN 的小段代码、HTML 邮件里的内联脚本、书签脚本,或者看看一个库最多能压到多小。正式项目应该在每次构建时由打包工具自动压缩,源码保持可读。
常见问题
› 我的代码会被上传吗?
不会。Terser 和 CSSO 都在你的浏览器里运行,私有源码不会离开你的设备。
› 压缩会让 JavaScript 出错吗?
对于合法的代码,Terser 只做不改变行为的转换。如果代码在运行时依赖函数名或变量名(比如用到 Function.name),缩短变量名可能会有影响,这时关闭「缩短变量名」即可。
› CSS 的「合并重复规则」为什么是可选的?
合并会在规则之间移动声明。几乎所有样式表都没问题,但如果你的 CSS 依赖同等优先级规则的先后顺序,关闭它可以保证原有顺序不变。
› 会保留哪些注释?
打开「保留版权注释」时,以 /*! 开头或包含 @license、@preserve 的注释会保留,这是多数开源许可证的要求。其他注释都会被删除。