javascript - 如何minfy/obfuscate全局函数名称?

mar*_*ark 2 javascript obfuscation yui minify google-closure-compiler

我有一些代码具有以下格式:

function myfunc1 () { ... jquery.bind('click', myfunc2) ... }
function myfunc2 () { ... }
...
Run Code Online (Sandbox Code Playgroud)

是的,功能是全局的,但是因为我在谷歌浏览器扩展内容脚本中编写,所以它是沙箱.

现在,我正在尝试缩小和混淆代码.我已经尝试过YUI Compressor和Google Closure编译器.问题是,我无法弄清楚如何缩小/混淆全局函数名称.使用YUI时,如果它们被外部调用,它不会缩小全局变量.在高级模式下关闭,似乎它可以重命名全局变量,但是我遇到了死代码删除的问题.大多数函数似乎都已死,因为它们依赖于DOM交互和事件处理,并且不会直接调用.

那么关于如何缩小这些全局变量的任何想法?我是否需要编写脚本来进行一些正则表达式替换?如果能更好地适应缩小模式(例如,添加到闭包或诸如此类的东西),我也愿意重构我的代码

Jon*_*ski 10

Minifiers不会破坏公共/全局名称,因为对于许多脚本来说,这会破坏公共API的可用性和可预测性.

由于您不需要维护公共API,因此将它们包装在闭包函数中使它们"私有"可能就足够了:

(function () {

    function myfunc1 () { ... jquery.bind('click', myfunc2) ... }
    function myfunc2 () { ... 
    ...

})();
Run Code Online (Sandbox Code Playgroud)

但是,即便如此,也没有任何保证,因为它完全取决于minifier的作者.