我编写了一个简单的bash脚本,使用mishoo / UglifyJS2和以下代码自动为我缩小一些存储库:
../bower_components/UglifyJS2/bin/uglifyjs src/* -c -m -o ${minifiedFile}
它在Mac上运行良好,但我的同事无法运行,并出现以下错误:
C:\Users\User\uabshp\bower_components\UglifyJS2\bin\uglifyjs:111
.array("reserved-file")
^
TypeError: yargs.usage(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).describe(...).alias(...).alias(...).alias(...).alias(...).alias(...).alias(...).alias(...).alias(...).alias(...).alias(...).alias(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).string(...).array is not a function
at Object.<anonymous> (C:\Users\User\uabshp\bower_components\UglifyJS2\bin\uglifyjs:111:6)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.runMain (module.js:575:10)
at run (bootstrap_node.js:352:7)
at startup (bootstrap_node.js:144:9)
at bootstrap_node.js:467:3
这是Windows兼容性问题还是安装程序缺少某些内容?我已经不得不从compressJs切换为尝试缩小以在Windows上工作。
最佳答案
这不是一个完美的解决方案,但对我有用。我删除了在UglifyJS2/bin/uglifyjs.js
中引起麻烦的行。
行号72:
.describe("reserved-file", "File containing reserved names")
第77行:
.describe("pure-funcs", "List of functions that can be safely removed if their return value is not used")
。
行号111-112:
.array("reserved-file")
.array("pure-funcs")
行号536-554:
ast.walk(new UglifyJS.TreeWalker(function(node){
if (node instanceof UglifyJS.AST_Seq) return; // descend
if (node instanceof UglifyJS.AST_Assign) {
var name = node.left.print_to_string({ beautify: false }).replace(/-/g, "_");
var value = node.right;
if (constants)
value = new Function("return (" + value.print_to_string() + ")")();
ret[name] = value;
return true; // no descend
}
if (node instanceof UglifyJS.AST_Symbol || node instanceof UglifyJS.AST_Binary) {
var name = node.print_to_string({ beautify: false }).replace(/-/g, "_");
ret[name] = true;
return true; // no descend
}
print_error(node.TYPE)
print_error("Error parsing arguments for flag `" + flag + "': " + x);
process.exit(1);
}));
删除的行显然会影响功能,但仍然可以满足我的目的。如果有人有更好的解决方案,我会予以标记。