要在 Chrome Extension 中使用 Closure library, 需要将 Closure library 按照需求打包。 假设扩展的开发目录如下:

-root
|-css
|-js
|-closure-library
|-menifest.json
|-..
  1. 首先请到 Closure 官方 下载打包工具 compiler.jar

  2. 将 compiler.jar 放到 root 目录下。

  3. 在本目录下任意位置新建 source.js (命名随意),将所有对 Closure library 的依赖请求写入里面。

    goog.require('goog.dom');
    goog.require('goog.events');
    goog.require('goog.asserts');
    
  4. 运行如下命令

    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 // 指定输出的文件
    
  5. 直接在 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