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

closure compiler - keep unused functions and don't rename the undefined

本文关键字:函数 重命名 未定义 编译器 保留 未使用 闭包      更新时间:2023-09-26

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

这背后有两个主要原因:

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

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

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

听起来

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

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

1 - 连接所有

2 - 运行闭包编译器

此外,您可能希望(正如我经常做的那样,由于 v1.8 之前的 jquery 问题)使用 compilationLevel="simple" 运行编译器。

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

编辑 :当然,您必须自动化所有这些。如果您使用 ant,我可以为您提供 ant 任务定义。