使用 Closure Library 构建库
Build a library using Closure Library
我正在尝试 "build" 我的项目使用 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');
;所以我想我需要在这一行中包含 google 闭包库,对吗?
所以,我尝试将我的 build.sh 更改为类似的东西(添加了 closure-library 文件夹):
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) 没有我的库的所有功能。我不确定问题出在哪里。
- 我真的必须在构建部分包含 google 闭包吗?
- 我正在开发一个 Javascript 库,所以我没有入口点,所有代码都必须包含在生成的文件中。那么,我该怎么做呢?
感谢您的宝贵时间!
编辑:
我尝试了一些不同的方法:从我的库中删除所有像 "goog.require('goog.vec.Mat4');" 这样的行。构建已成功完成,但我的模拟不再有效:Cannot read property 'Mat4' of undefined
您正在寻找的功能记录在 GitHub wiki 的 Manage Closure Dependencies
下
确定依赖关系
1。您的库源包含 goog.provide
个语句
在这种情况下,您将结合使用 --only_closure_dependencies
和 --closure_entry_point
标志。您的 "entry" 点是您要从中计算依赖性的库中的任何 class。您可以有多个入口点。
2。您的库源不包含 goog.provide
语句
使用--manage_closure_dependencies
标志。这指示编译器在输出中包含任何不包含 goog.provide
语句的 JS 文件,并根据这些文件中的 goog.require
语句计算所有需要的依赖项。
向编译器提供文件
Closure-compiler 的 --js
输入标志可以指定最小匹配 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'
我正在尝试 "build" 我的项目使用 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');
;所以我想我需要在这一行中包含 google 闭包库,对吗?
所以,我尝试将我的 build.sh 更改为类似的东西(添加了 closure-library 文件夹):
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) 没有我的库的所有功能。我不确定问题出在哪里。
- 我真的必须在构建部分包含 google 闭包吗?
- 我正在开发一个 Javascript 库,所以我没有入口点,所有代码都必须包含在生成的文件中。那么,我该怎么做呢?
感谢您的宝贵时间!
编辑:
我尝试了一些不同的方法:从我的库中删除所有像 "goog.require('goog.vec.Mat4');" 这样的行。构建已成功完成,但我的模拟不再有效:Cannot read property 'Mat4' of undefined
您正在寻找的功能记录在 GitHub wiki 的 Manage Closure Dependencies
下确定依赖关系
1。您的库源包含 goog.provide
个语句
在这种情况下,您将结合使用 --only_closure_dependencies
和 --closure_entry_point
标志。您的 "entry" 点是您要从中计算依赖性的库中的任何 class。您可以有多个入口点。
2。您的库源不包含 goog.provide
语句
使用--manage_closure_dependencies
标志。这指示编译器在输出中包含任何不包含 goog.provide
语句的 JS 文件,并根据这些文件中的 goog.require
语句计算所有需要的依赖项。
向编译器提供文件
Closure-compiler 的 --js
输入标志可以指定最小匹配 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'