React Native 中的 Hermes 引擎是否需要一个缩小的文件作为输入?

问题描述

目前(至少从 0.64-rc.3 开始),React Native 首先在源代码上运行 Metro Bundler / Uglify,然后将缩小后的 jsbundle 传递给 hermesc。我注意到,在我的至少 2 个项目中,禁用 Metro 中的 Uglify 步骤显着加快了 Hermes 编译步骤。

问题是:爱马仕真的需要一个缩小版的源吗?

直觉上,它根本不重要,因为 Uglify 不会做任何死代码剥离或其他 AST 优化。但我的理解中可能遗漏了一些关键细节。

解决方法

根据Tzvetan Mikov (Hermes project lead),who has kindly answered this question on Github,Hermes 不需要任何预缩小:

不,Hermes 不需要缩小输入。 Minifiers 主要重命名局部变量和参数并执行一些简单的 AST 转换,这对已编译的 Hermes 包的大小和性能几乎没有影响。我们建议禁用 Hermes 的缩小,但并没有真正积极推动它,因为 Metro 管道也支持 JSC,这确实受益于缩小。