7

我一直被“取消”缩小的 JavaScript 代码文件这一令人不快的任务所困扰。使用 JSBeautifier,生成的文件大约有 6000 行长。

通常,变量和参数名称会永久丢失,但在这种情况下,我有一个过时版本的原始文件,从该文件生成了缩小的 JavaScript 代码文件。这个过时版本的原始文件包含大部分代码注释和变量名,但绝对不能用来代替当前版本。

我想知道是否有某种方法可以重命名 JavaScript 中特定参数或变量的所有实例。由于缩小将名称减少为单个字符,因此不可能进行查找和替换。

是否有一些工具,我可以告诉,在这个文件中,a函数的参数foo应该是clientName并且让它在语义上将该参数的所有实例重命名为clientName

不幸的是,我为一个拥有批准的软件列表的大型组织工作,并且在可预见的未来(没有 VS 2012)我坚持使用 Visual Studio 2010。

更新: @Kos,我们不使用 Git,但我们使用源代码控制。问题是不再为我的组织工作的开发人员一旦对文件进行了更改,将其缩小,并且仅将缩小版本签入源代码控制,因此他对原始文件的更改已经丢失。

4

3 回答 3

7

这个答案我迟到了一年,但我遇到了和你类似的问题,所以我建立了这个:https ://github.com/zertosh/beautify-with-words 。它使用 UglifyJS2 简化代码,但使用拼音词生成器重命名变量。你会得到“长”的变量名,所以查找和替换是一件轻而易举的事。希望这对其他人有帮助!

于 2014-01-26T03:13:52.503 回答
2

你可能还有其他出路。

查看代码的最后一个未缩小版本。对比缩小版。可以说,其中大部分应该是相同的模一致变量重命名。您必须重命名和重新合并的差异。

Diff 不会进行这种比较;您需要将程序作为代码而不是文本进行比较的工具。我们的 SmartDifferencer 工具将执行此操作(通过使用特定语言的完整解析器生成 AST,然后比较 AST);实际上,尽管有空白,它还是比较了程序。SmartDifferencer 也处理重命名;如果两个文件以单个重命名为模相同,这就是 SmartDifferencer 告诉你的。

我不知道这项工作的效果如何。我们还没有尝试使用 6000 行“一致重命名”变量的 SmartDifferencer。

于 2013-02-22T23:07:47.983 回答
1

我发现我们在这里获得许可的一个名为“Telerik JustCode”的 Visual Studio 扩展具有执行我想要的功能。

于 2013-02-27T20:09:23.980 回答