要在 Chrome Extension 中使用 Closure library, 需要将 Closure library 按照需求打包。 假设扩展的开发目录如下:
-root
|-css
|-js
|-closure-library
|-menifest.json
|-..
-
首先请到 Closure 官方 下载打包工具 compiler.jar
-
将 compiler.jar 放到 root 目录下。
-
在本目录下任意位置新建 source.js (命名随意),将所有对 Closure library 的依赖请求写入里面。
goog.require('goog.dom'); goog.require('goog.events'); goog.require('goog.asserts');
-
运行如下命令
closure-library/closure/bin/build/closurebuilder.py // 定位到 Closure library 中的 buider.py 脚本 --root=closure-library/ // 这一项指定 Closure library 的目录位置 --root=myproject/ // 指定开发项目的位置 --namespace="myproject.start" // 指定使用的主命名空间 --output_mode=compiled // output_mode 输出模式使用 cimpiled --compiler_jar=compiler.jar // 指定 compiler.jar 的位置 --compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" // 指定 compiler.jar 的参数,双引号内直接使用 compiler.jar 的参数 > compiled.lib.js // 指定输出的文件
-
直接在 Chrome extension 中引入输出的
compiled.lib.js
就可以正常使用 Closure library 了。builder.py
脚本会自动检测你所依赖的 Closure library 类,并将其打包。你还可以将命令直接写成 Makefile 脚本,下次直接运行脚本即可。development: closure-library/closure/bin/build/closurebuilder.py --root=closure-library/ --root=js/ --namespace="YourRootNameSpace" --output_mode=compiled --compiler_jar=compiler.jar > compiled.js production: closure-library/closure/bin/build/closurebuilder.py --root=closure-library/ --root=js/ --namespace="YourRootNameSpace" --output_mode=compiled --compiler_jar=compiler.jar --compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" > compiled.js all: development