目前(至少从 0.64-rc.3 开始),React Native 首先在源上运行 Metro Bundler / Uglify,然后将缩小的 jsbundle 传递给 hermesc。我注意到,在我的至少 2 个项目中,禁用 Metro 中的 Uglify 步骤极大地加快了 Hermes 编译步骤。
问题是:Hermes 是否需要缩小源?
直观地说,这根本不重要,因为 Uglify 不进行任何死代码剥离或其他 AST 优化。但在我的理解中,我可能遗漏了一些重要的细节。
目前(至少从 0.64-rc.3 开始),React Native 首先在源上运行 Metro Bundler / Uglify,然后将缩小的 jsbundle 传递给 hermesc。我注意到,在我的至少 2 个项目中,禁用 Metro 中的 Uglify 步骤极大地加快了 Hermes 编译步骤。
问题是:Hermes 是否需要缩小源?
直观地说,这根本不重要,因为 Uglify 不进行任何死代码剥离或其他 AST 优化。但在我的理解中,我可能遗漏了一些重要的细节。
根据在 Github 上友好地回答了这个问题的 Tzvetan Mikov(Hermes 项目负责人)所说,Hermes 不需要任何预先缩小:
不,Hermes 不需要缩小输入。压缩器主要重命名局部变量和参数并执行一些简单的 AST 转换,这对编译后的 Hermes 包的大小和性能几乎没有影响(如果有的话)。我们建议使用 Hermes 禁用缩小,但并没有真正积极推动它,因为 Metro 管道也支持确实受益于缩小的 JSC。