使用Google Closure进行项目范围的混淆

时间:2017-04-15 10:19:14

标签: obfuscation minify google-closure-compiler

我正在使用Google的闭包编译器(设置为compilation_level = ADVANCED_OPTIMIZATIONS)来成功缩小/混淆我的javascript代码(我目前正在使用Sublime文本插件进行半手动操作)。

我的绝大部分javascript都在一个.js文件中,但当然如果我混淆了这段代码,并且在我的项目的html文件中有其他javascript片段(可能是指前混淆函数名称),那么我我会遇到问题。

处理这种困境的最佳方法是什么?理想情况下,我可以通过编译器运行整个项目,它可以识别html文件中的javascript并以一致的方式对它们进行模糊处理。

1 个答案:

答案 0 :(得分:2)

从HTML代码导出需要调用的函数,编译器不会重命名(缩小)这些函数。使用@export标记作为类型定义的一部分,或在定义后调用goog.exportSymbolgoog.exportProperty。请参阅此Wiki页面中有关@export

的部分

请参阅解决方案:导出您要保留的符号部分,在Advanced Compilation and Externs页面上进行讨论,并采用其他方式:

function displayNoteTitle(note) {
  alert(note['myTitle']);
}
// Store the function in a global property referenced by a string:
window['displayNoteTitle'] = displayNoteTitle;

如果需要,您可以为导出的内容使用晦涩的名称。如果html文件中有很多代码,请将该代码移动到单个文件中的函数,然后从html调用这些函数。 Closure Compiler不会编译html文件中的代码。