gpt4 book ai didi

google-closure-compiler - 如何告诉闭包编译器不要使用 SIMPLE_OPTIMIZATIONS 重命名内部函数?

转载 作者:行者123 更新时间:2023-12-03 17:59:45 27 4
gpt4 key购买 nike

如何告诉闭包编译器不要重命名内部函数?例如,鉴于此代码:

function aMeaninglessName() {
function someMeaningfulName() {
}

return someMeaningfulName;
}

...我对 Closure 重命名外部函数没问题(我积极希望它这样做,以节省空间),但我想要函数名称 someMeaningfulName单独留下(以便在调用堆栈中显示的名称是“someMeaningfulName”,而不是“a”或其他任何名称)。尽管调用它的代码将通过工厂函数返回的引用而不是代码中的名称来调用它。例如,这纯粹是为了调试支持。

请注意,我希望该函数具有 那个真实姓名 , 不是匿名的并使用该名称分配给某些属性,因此例如这不是 this other question 的重复项.

这个有点晦涩的用例似乎没有被 externs 或导出功能所涵盖。 (我有点希望会有一些 annotation 我可以扔掉它。)但我不是 Closure Compiler 大师,我希望你们中的一些人是。当然,如果没有办法做到这一点,这是一个可以接受的答案。

(用例是一个库,它创建函数以响应对它的调用。我想提供一个库的版本,该版本已被 Closure 和 SIMPLE_OPTIMIZATIONS 预压缩,但如果有人使用该库的副本和他们自己的未压缩代码并在调试器[或其他类似操作]中单步进入函数,我希望他们看到有意义的名称。我可以用 eval 绕过它,或者手动编辑压缩结果[实际上,上下文是足够独特,我可以扔一个 sed 脚本],但这很尴尬,坦率地说,我们进入了“不值得打扰”的领域,因此寻找一种简单、低维护的方式。)

最佳答案

没有简单的方法可以做到这一点。您必须创建 CodingConvention 类的自定义子类,以指示您的方法是“本地”外部方法(已添加对此的支持以处理 Prototype 库)。 InlineVariables、InlineFunctions 或 RemoveUsedVariables 可能仍会尝试删除名称,并且也需要修复。

另一种方法是使用源映射将堆栈跟踪重新映射到原始源。

关于google-closure-compiler - 如何告诉闭包编译器不要使用 SIMPLE_OPTIMIZATIONS 重命名内部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com