我正在尝试使用Closure Library“构建”我的项目;可悲的是,经过多次测试后,我无法构建没有问题的东西。我的项目是一个库,所以我没有一个入口点或类似的东西,大部分代码都是由用户的对象和函数组成的。
我有一个这样的项目:
- build
- build.sh
- compiler.jar
- libs
- closure-library
- src
我的 build.sh 文件:
java -jar compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file out.js `find ../src/ -name '*.js'`
使用此命令行我收到错误:goog.require('goog.vec.Vec2');
;所以我想我需要在这一行中包含谷歌闭包库,对吗?
所以,我试图将build.sh更改为类似的东西(添加了封闭库文件夹):
java -jar compiler.jar --compilation_level SIMPLE_OPTIMIZATIONS --js_output_file out.js `find ../src/ ../libs/closure-library/closure/ -name '*.js'`
使用这个脚本,我从闭包库中得到了很多错误:
../libs/closure-library/closure/goog/i18n/datetimeformat_test.js:572: ERROR - This style of octal literal is not supported in strict mode.
var date = new Date(Date.UTC(2015, 11 - 1, 01, 11, 0, 1));
我生成的文件(out.js)没有得到我所有库的功能。我不确定问题在哪里。
谢谢你的时间!
修改
我尝试了不同的东西:删除所有行,如“goog.require('goog.vec.Mat4');”来自我的图书馆。构建成功完成但我的模拟不再起作用:Cannot read property 'Mat4' of undefined
答案 0 :(得分:1)
您正在寻找的功能记录在Manage Closure Dependencies
下的GitHub wiki上goog.provide
语句在这种情况下,您将--only_closure_dependencies
与--closure_entry_point
标志结合使用。你的"条目" points是库中要从中计算依赖项的任何类。您可以有多个入口点。
goog.provide
语句使用--manage_closure_dependencies
标志。这指示编译器在输出中包含任何不包含goog.provide
语句的JS文件,并根据这些文件中的goog.require
语句计算所有需要的依赖项。
Closure-compiler的--js
输入标志可以指定minimatch glob样式模式,这是提供Closure-library文件作为输入的首选方法。如果您使用的是--manage_closure_dependencies
选项,则必须排除Closure-library测试文件。
示例:
java -jar compiler.jar --compilation_level=SIMPLE_OPTIMIZATIONS
--js_output_file=out.js
--manage_closure_dependencies
--js='../src/**.js'
--js='../libs/closure-library/**.js'
--js='!../libs/closure-library/**_test.js'