Я использую UglifyJS для анализа, минимизации и преобразования кодов JS. Одна из моих целей - преобразовать AST, вставив новые определения переменных. Например:
var x;
var y;
x = 1;
y = x;
x = 3;
Я хочу вставить новое определение переменной «var _x» в случайную позицию, например перед оператором «y = x». Преобразованный код должен быть таким:
var x;
var y;
x = 1;
var _x = x;
y = _x;
_x = 3;
Я пробовал TreeTransformer в UglifyJS. Обновить ссылку на символ, сделав ее новой (x -> _x), не проблема. Но мне неясно, как получить правильную позицию для вставки с помощью TreeTransformer. Кто-нибудь может поделиться некоторыми идеями? Некоторые примеры кода были бы лучше!