js ライブラリのビルド環境を整えようとしています。Web 上のレビューによると、UglifyJS は、NodeJSで動作する、最も優れた圧縮モジュールの 1 つと思われます。したがって、コードを縮小するための最も推奨される方法は次のとおりです。
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)