私のjsライブラリの良いビルド環境を準備しようとしています。ウェブ上のレビューによると、UglifyJSはNodeJSの下で働いている最善の圧縮モジュールのようです。だからここにコードを縮小化する最良の推奨される方法である:ここで見られるようにUglify-jsは変数名を変更しません
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のエキスパートは、私が間違っていることを知っていますか?
UPDATE:
実際のコードはここに参照するためには大きすぎるが、このようにもスニペットがマングルされません。これは私が得るものです
;(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)
私は、コードの小さなスニペットを投稿し、問題が見つかった場合に役立つと思います。 –
私は行方不明のオプションがあったと思った。小さなスニペットで今すぐ更新。明らかに、私の環境には何かがありますか?デバッグを開始する場所や、uglify-jsに悪影響を与える可能性のあるものは、いつ要求されますか。 – jayarjo
さて、UglifyJSのウェブサイトでは、私は次のようになっています: '(function a、b、c){function d(a){return typeof a!=" string "?a:b.getElementById(a)} a.mOxie = ao = d})(window、document) '正しいスイッチをオンにしてもよろしいですか? –