#! /usr/bin/env node global.sys = require(/^v0\.[012]/.test(process.version) ? "sys" : "util"); var fs = require("fs"); var uglify = require("uglify-js"), // symlink ~/.node_libraries/uglify-js.js to ../uglify-js.js jsp = uglify.parser, pro = uglify.uglify; var code = fs.readFileSync("hoist.js", "utf8"); var ast = jsp.parse(code); ast = pro.ast_lift_variables(ast); var w = pro.ast_walker(); ast = w.with_walkers({ "function": function() { var node = w.dive(this); // walk depth first console.log(pro.gen_code(node, { beautify: true })); return node; }, "name": function(name) { return [ this[0], "X" ]; } }, function(){ return w.walk(ast); }); console.log(pro.gen_code(ast, { beautify: true }));