使用rhino或closure编译器从java更改javascript变量和函数名称

Dou*_*eri 1 javascript java rhino google-closure-compiler

我希望能够根据某些条件更改javascript文件中的变量和函数名称,然后输出修改后的javascript.这类似于javascript minifier的功能.这是一个例子:我有这个javascript代码

var something=5;
something++;
function doSomething(n){
   alert(n);
}
doSomething(something):
Run Code Online (Sandbox Code Playgroud)

现在我想更换something,并doSomethingsomethingElsedoSomethingElse,并返回下面的JavaScript代码:

var somethingElse=5;
somethingElse++;
function doSomethingElse(n){
   alert(n);
}
doSomethingElse(somethingElse):
Run Code Online (Sandbox Code Playgroud)

我认为这可以在rhino或google closure编译(基于rhino)中完成,但不知道如何.我也对其他建议持开放态度.

谢谢

Cha*_*rth 5

Rhino只是一个解析器,所以除了最简单的情况之外它不会真正有用.

Closure-compiler在技术上可以做到这一点,但不官方支持定向重命名.

以下技术用于增量编译.使用映射文件,编译器尝试(但不保证)兑现以前的变量和属性重命名.您可以使用以下步骤完成此工作,但无法保证它在所有情况下都能正常工作:

步骤1

使用以下语法创建变量映射文件(每行一个条目)

varname:renamedname
Run Code Online (Sandbox Code Playgroud)

第2步

使用变量重命名作为编译命令的一部分

java -jar compiler.jar --js inputfile.js \
  --variable_map_input_file varrenaming.txt
Run Code Online (Sandbox Code Playgroud)

请注意,所有正常的重命名规则仍然适用.如果先前未重命名变量,则不会导致现在重命名该变量.