试图为我的 js 库准备好的构建环境。根据网络上的评论,UglifyJS似乎是最好的压缩模块之一,在 NodeJS 下工作。所以这是缩小代码的最佳推荐方法:
var jsp = require("uglify-js").parser;
var pro = require("uglify-js").uglify;
var orig_code = "... JS code here";
var ast = jsp.parse(orig_code); // parse code and get the initial AST
ast = pro.ast_mangle(ast); // get a new AST with mangled names
ast = pro.ast_squeeze(ast); // get an AST with compression optimizations
var final_code = pro.gen_code(ast); // compressed code here
如这里所见,pro.ast_mangle(ast)
应该修改变量名,但事实并非如此。我从这个管道中得到的只是 javascript 代码,没有空格。起初我认为我的代码没有针对压缩进行优化,但后来我用Google Closure进行了尝试,得到了相当大的压缩(变量名称和所有内容都被破坏了)。
UglifyJS 专家,有什么提示我做错了什么吗?
更新:
实际代码太大,无法在此处引用,但即使是这样的片段也不会被破坏:
;(function(window, document, undefined) {
function o(id) {
if (typeof id !== 'string') {
return id;
}
return document.getElementById(id);
}
// ...
/** @namespace */
window.mOxie = o;
}(window, document));
这就是我得到的(我猜只有空格被剥离):
(function(window,document,undefined){function o(id){return typeof id!="string"?id:document.getElementById(id)}window.mOxie=window.o=o})(window,document)