使用谷歌闭包删除未使用的功能

时间:2015-08-30 13:58:23

标签: javascript jquery minify google-closure-compiler

上一个问题询问如何消除死代码,但似乎没有回答中心问题: find dead JavaScript code?

我正在尝试缩小一组包含jquery和其他几个库的12个javascript文件。我相信大多数jquery都没用过。

当前的编译行是:

java -jar compiler.jar --language_in ECMASCRIPT5 --compilation_level ADVANCED_OPTIMIZATIONS --js *.js --js_output_file liq-min.js

它将代码的大小从240k减少到176k,但由于90k是jquery,它应该能够做得更好。

特别是对于谷歌闭包,有没有办法定义一组初始函数调用,并消除所有未调用的函数?显然,eval和其他字符串相关的问题意味着我们必须手动设置列表,但重要的是去除被调用的更大的库。

此外,closure会缩小局部变量名称,但不会缩小全局函数名称。 有没有办法做到这一点?如果有必要,我准备在最后添加一个字符串替换传递,但这并不理想。

换句话说,有没有办法让闭包转换:

Calendar.foo()
function foobar() {...}

C.f()
function f2() {...}

鉴于我正在将所有代码输入编译器,因此无需担心对这些函数的外部引用。换句话说,这不是一个库,它是一个应用程序,所需的唯一函数调用就是那些。

1 个答案:

答案 0 :(得分:0)

哎呀,现在我找到了另一个答案: Use closure compiler to remove unused parts of jQuery

似乎没有编写jquery来处理高级优化。 我将快速浏览一下jquery,但它可能不值得继续工作。