闭包编译器 - 保留未使用的函数,不要重命名undefined

时间:2012-06-02 10:27:04

标签: javascript minify google-closure-compiler

所以闭包编译器很棒,但导出函数和定义externs似乎是太多的手工工作。 有没有办法告诉编译器它不应该删除任何函数,不应该重命名任何未定义的函数?

我有两个主要原因:

  1. 如果函数或属性未在javascript文档的范围内定义,则可能在外部文件中定义。因此,我不希望重命名这些。

  2. 如果函数是在给定范围内定义但未在同一范围内调用,则可能在某些外部代码中调用它。因此,我想将此函数保留在文件中而不重命名。

  3. 这样,我们可以简单地编译javascript文件,而无需担心外部库和导出从html页面调用的函数。

2 个答案:

答案 0 :(得分:1)

听起来你应该使用SIMPLE_OPTIMIZATIONS的优化级别运行编译器。不要被名称所迷惑,因为它仍然完全编译你的代码。主要区别在于SIMPLE_OPTIMIZATION不会重命名或消除全局范围内的死代码。这意味着外部和出口的要求不再存在。

答案 1 :(得分:0)

为了避免这种情况,我在一个完整的脚本上运行闭包编译器,该脚本是我的应用程序的所有脚本的串联。所以这是一个两步过程:

1 - 连接所有

2 - 运行闭包编译器

此外,您可能希望(因为我经常这样做,因为v1.8之前的jquery问题)使用compilationLevel =“simple”运行编译器。

连接非常重要,因为一般来说,缓慢与总大小无关,但主要与请求数量有关。

编辑:当然,你必须自动完成这一切。如果你使用ant,我可以为你提供一个ant任务定义。