DevToolPal
简

JavaScript 与 CSS 压缩

用 Terser 压缩 JavaScript、用 CSSO 压缩 CSS,减小文件体积,全部在浏览器里完成。

本地处理,不上传

选项

语言

输入

0 字符 · 0 B

输出

0 字符 · 0 B

功能简介

压缩(minify)会删掉浏览器运行代码时用不到的一切:空白、换行、注释和长名字。文件越小下载越快,能改善页面加载速度和 Core Web Vitals 指标,在移动网络下尤其明显。

这个工具用 Terser 压缩 JavaScript,它也是 webpack、Rollup 和 Vite 使用的压缩器;用 CSSO 压缩 CSS,CSSO 还会重组样式表:缩短颜色(#ffffff 变成 #fff),去掉多余的单位和值(0px 0px 变成 0),合并选择器或声明相同的规则。

使用方法

  1. 把代码粘贴到「输入」框,或把 .js、.css 文件拖进去,也可以点「示例」。
  2. 选择 JavaScript 或 CSS。
  3. JavaScript 的「缩短变量名」会把局部变量和参数改成单个字母,导出的名称和全局名称不会改。
  4. CSS 的「合并重复规则」会把声明相同的规则合在一起。
  5. 复制或下载结果。输入框和输出框下方的大小统计能看出省了多少。

如果 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 的注释会保留,这是多数开源许可证的要求。其他注释都会被删除。