通过 Java 将定义传递给 Google Closure 编译器

发布于 2024-11-19 00:54:30 字数 961 浏览 3 评论 0原文

正如标题所示,我想通过 Java API 以编程方式将定义传递给 Google Closure 编译器。

这是我当前的代码:

com.google.javascript.jscomp.Compiler.setLoggingLevel(Level.INFO);
com.google.javascript.jscomp.Compiler compiler = new com.google.javascript.jscomp.Compiler();
CompilerOptions options = new CompilerOptions();
CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
WarningLevel.VERBOSE.setOptionsForWarningLevel(options);

List<JSSourceFile> externs = new ArrayList<JSSourceFile>();
externs.add(JSSourceFile.fromFile(extern_src));

List<JSSourceFile> primary = new ArrayList<JSSourceFile>();
primary.add(JSSourceFile.fromFile(tmp));
compiler.compile(externs, primary, options);
for (JSError message : compiler.getWarnings()) {
    System.err.println("Warning message: " + message.toString());
}

for (JSError message : compiler.getErrors()) {
    System.err.println("Error message: " + message.toString());
}

As the title says, I'd like to pass defines programmatically via the Java API to the Google Closure Compiler.

This is my current code:

com.google.javascript.jscomp.Compiler.setLoggingLevel(Level.INFO);
com.google.javascript.jscomp.Compiler compiler = new com.google.javascript.jscomp.Compiler();
CompilerOptions options = new CompilerOptions();
CompilationLevel.ADVANCED_OPTIMIZATIONS.setOptionsForCompilationLevel(options);
WarningLevel.VERBOSE.setOptionsForWarningLevel(options);

List<JSSourceFile> externs = new ArrayList<JSSourceFile>();
externs.add(JSSourceFile.fromFile(extern_src));

List<JSSourceFile> primary = new ArrayList<JSSourceFile>();
primary.add(JSSourceFile.fromFile(tmp));
compiler.compile(externs, primary, options);
for (JSError message : compiler.getWarnings()) {
    System.err.println("Warning message: " + message.toString());
}

for (JSError message : compiler.getErrors()) {
    System.err.println("Error message: " + message.toString());
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

站稳脚跟 2024-11-26 00:54:30

您想要填充 定义替换地图

options.getDefineReplacements().put("myDefineVarName", value);

该值必须是一个 Node,它是布尔值、数字或字符串文字。

new Node(Token.TRUE)

要为布尔文字创建值,请使用类似于 NodeToken 均来自包 com.google.javascript.jscomp.rhino 的 >。

我相信 Token.STRING 和 Token.NUMBER 是其他类型值的令牌类型,但不要引用我的观点。

You want to populate the define replacements map.

options.getDefineReplacements().put("myDefineVarName", value);

The value has to be a Node that is a boolean, numeric, or string literal.
To create a value for a boolean literal use a value like

new Node(Token.TRUE)

where both Node and Token are from the package com.google.javascript.jscomp.rhino.

I believe Token.STRING and Token.NUMBER are the token types for the other kinds of values but don't quote me on that.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文