使用 Google Closure Compiler 时如何防止关键字被混淆?

Posted

技术标签:

【中文标题】使用 Google Closure Compiler 时如何防止关键字被混淆?【英文标题】:How to prevent keywords from getting obfuscated when using Google Closure Compiler? 【发布时间】:2015-07-24 14:00:02 【问题描述】:

我正在尝试使用 Google Closure 编译器混淆 javascript 文件(大约 50 个)。这些文件都相互依赖。

在简单模式下,它只混淆局部变量。

在高级模式下,它会混淆所有变量和函数,包括我不想混淆的某些关键字(args、readline、atEnd)。

如何混淆某些变量而不混淆其他变量?具体来说:我不希望关键字被混淆。

【问题讨论】:

没有are keywords? 为什么不希望这些混淆?您是否在一个脚本中声明全局变量并在另一个脚本中使用它们? 这些是 nodejs 关键字。我可以知道如何外部 nodejs 吗?? 【参考方案1】:

ADVANCEDSIMPLE 模式之间存在相当大的差异。高级优化仅适用于旨在不违反任何compiler restrictions 的代码库。在继续之前,您可以阅读Which Compilation Level is Right for Me?

你的问题的答案是外部和出口:

Externs 阻止编译器重命名外部库中的符号 导出会保留代码中的符号以供其他地方使用

【讨论】:

【参考方案2】:

我没有使用 Google Closure Compiler 的经验,但为了混淆我的项目,我使用了 Jscrambler。 它使您可以防止关键字被他们称为"Rename Exclude List" 的黑名单混淆。我有时会在我有微妙的函数名称时使用此功能,否则如果它们被混淆会破坏我的代码。

【讨论】:

以上是关于使用 Google Closure Compiler 时如何防止关键字被混淆?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Google 的 Closure 库不在他们的 CDN 上托管?

让 browserify 与 Google Closure Compiler 一起工作

使用 Google Closure Compiler 时如何防止关键字被混淆?

google closure 笔记-SOY template

如何有效地将 google-closure javascript 转换为现代 ES6?

在带有属性的ES6模块上使用Closure Compiler