You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用UglifyJS时仅压缩文件名而非文件内容的问题求助

解决UglifyJS仅输出文件名而非压缩内容的问题

嘿,这个问题我之前也踩过坑!核心原因是UglifyJS的API在v3版本做了重大调整,你现在用的应该是v3+版本,但写法还沿用了旧版本的逻辑,所以工具把文件名数组当成字符串输出,而非读取文件内容进行压缩。

下面给你两种针对性的解决方案:

方案一:适配UglifyJS v3+的正确写法

在v3版本里,minify()不再直接支持传入文件名数组,你需要先读取文件内容再传入,或者通过对象参数指定文件内容:

单个文件压缩

const fs = require('fs');
const UglifyJS = require('uglify-js');

// 先读取目标文件的内容
const jsContent = fs.readFileSync('app_client/app.js', 'utf8');
// 把文件内容传入minify方法进行压缩
const resultugly = UglifyJS.minify(jsContent);

// 输出压缩后的代码
console.log(resultugly.code);

多个文件压缩

如果要批量压缩多个文件,可以读取所有文件内容后合并传入,或者用键值对的形式传入:

const fs = require('fs');
const UglifyJS = require('uglify-js');

const resultugly = UglifyJS.minify({
  'app.js': fs.readFileSync('app_client/app.js', 'utf8'),
  'utils.js': fs.readFileSync('app_client/utils.js', 'utf8')
});

console.log(resultugly.code);

方案二:降级到UglifyJS v2版本

如果你想继续使用原来的写法(直接传文件名数组),可以安装v2版本:

npm install uglify-js@2 --save-dev

安装完成后,你原来的代码就能正常工作,工具会自动读取文件内容并压缩:

var resultugly = UglifyJS.minify(['app_client/app.js']); 
console.log(resultugly.code);

为什么原来的代码会输出文件名?

在UglifyJS v3中,minify()方法如果接收数组,会直接把数组转换成字符串(比如['app_client/app.js']会变成"app_client,app.js"),然后把这个字符串当成要压缩的代码处理,所以你才会看到输出的是文件名拼接结果,而非文件内容。

内容的提问来源于stack exchange,提问作者krekto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:43:43