【问题标题】:Use external library with google-closure-compiler使用带有 google-closure-compiler 的外部库
【发布时间】:2015-10-25 08:54:52
【问题描述】:

我正在尝试使用 google 闭包编译器构建我的项目。可悲的是,我的项目使用 Box2D:一个没有 google 闭包的物理库,所以我只有一个包含他库函数的缩小文件。

我怎样才能不出错地构建我的项目?

这是我的构建命令行:

java -jar ../libs/closure-compiler.jar \
    --compilation_level SIMPLE_OPTIMIZATIONS \
    --language_in=ECMASCRIPT5_STRICT \
    --warning_level VERBOSE \
    --only_closure_dependencies\
    --summary_detail_level 3 \
    --process_closure_primitives true \
    --closure_entry_point="MyProject.Main"\
    --js='../src/**.js' \
    --js='../libs/closure-library/**.js' \
    --js='!../libs/closure-library/**_test.js' \
    --js='!../libs/closure-library/**_test.js' \
    --js_output_file Project.js

这是我遇到的错误:

ERROR - variable Box2D is undeclared
        var col = Box2D.wrapPointer(color, Box2D.b2Color);

ERROR - variable b2_kinematicBody is undeclared
        this.instance.SetType(b2_kinematicBody);        

ERROR - variable b2Vec2 is undeclared
    this.instance.SetLinearVelocity(new b2Vec2(x, y));

ERROR - variable b2BodyDef is undeclared
    var definition = new b2BodyDef();

ERROR - variable b2FixtureDef is undeclared
    var fixture = new b2FixtureDef();

ERROR - variable b2CircleShape is undeclared
    var shape = new b2CircleShape();

我尝试将--js='../libs/Box2D-min.js' 添加到我的构建脚本中,错误总是在这里。

【问题讨论】:

    标签: javascript google-closure-compiler google-closure-library


    【解决方案1】:

    对于源代码与高级模式下的 Closure-Compiler 不兼容的任何库,您都需要外部定义。 official documentation 对此进行了介绍。

    Extern 使用 --externs 标志(而不是 --js 标志)提供给编译器。虽然提供外部库源作为 extern 可能很诱人,但这几乎总是会产生糟糕的结果。

    有关创作外部的具体细节,请参阅https://stackoverflow.com/a/20101173/1211524

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      相关资源
      最近更新 更多