Uglify-js не искажает имена переменных

Пытаюсь подготовить хорошую среду сборки для моей 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)

17
задан jayarjo 11 June 2012 в 07:48
поделиться