Gulp 在google closure中的编译过程中删除调试器关键字

h9vpoimq  于 2022-12-08  发布在  Gulp
关注(0)|答案(2)|浏览(148)

更新:****不再支持或维护JS版本的闭包编译器。https://github.com/google/closure-compiler-npm/blob/master/packages/google-closure-compiler-js/readme.md

我试图找到是否有一种方法来删除“调试器”关键字在编译过程中,我使用的javascript版本google-closure-compiler与gulp。
通过查看文档,我们可以清楚地看到,通过执行以下操作,我们可以在编译期间设置停止/显示错误消息的标志。
https://github.com/google/closure-compiler/wiki/Flags-and-Options

--jscomp_off

翻译成“咕噜”,就是:

const googleClosureOptions = {
  ...
  jscomp_error:"checkDebuggerStatement"
}

然而,这通过抛出错误或显示警告来停止编译。

zyxcdafg.js:1444: ERROR - [JSC_DEBUGGER_STATEMENT_PRESENT] Using the debugger statement can halt your application if the user has a JavaScript debugger running.
                    debugger;
                    ^^^^^^^^^

但是我想实现的是删除debugger关键字。这是否可以使用googleclosure实现。我找不到任何与此相关的标志或选项。

更新:****不再支持或维护JS版本的闭包编译器。https://github.com/google/closure-compiler-npm/blob/master/packages/google-closure-compiler-js/readme.md

epggiuax

epggiuax1#

不,我不这么认为。我建议你用别的方法来做。比如sed

find dist -name "*.js" -exec sed -i 's/\sdebugger;//' {} +

类似的操作将dist文件夹中的find文件**以.js**结尾,然后exec-ute seddebugger;的所有示例替换为空。
您可以将其添加到调用闭包编译器构建的脚本中。

6tr1vspr

6tr1vspr2#

编译器没有用于定义自定义代码移除传递的命令行API,但编译器的体系结构允许注册自定义传递,并且移除调试器语句的传递应该很简单:

if (n.isDebugger()) {
        compiler.reportChangeToEnclosingScope(n);
        n.detach();
    }

一般结构如下:
https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/CheckDebuggerStatement.java

相关问题