scribe/closurecompiler-library

此包已被 弃用 且不再维护。未建议替代包。

这是 Google 的 Closure Compiler 的一个最新分支,与上游保持同步,只是这个版本附带 composer 文件。

v0.1.2 2014-09-25 23:43 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:39:59 UTC


README

Build Status

The Closure Compiler 是一个用于使 JavaScript 下载和运行更快的工具。它是一个真正的 JavaScript 编译器。它不是从源语言编译到机器代码,而是从 JavaScript 编译到更好的 JavaScript。它解析你的 JavaScript,分析它,删除死代码,并重新编写和最小化剩余的部分。它还检查语法、变量引用和类型,并警告常见的 JavaScript 陷阱。

入门

获取帮助的选项

  1. Closure Compiler 讨论组 中发帖
  2. Stack Overflow 上提问
  3. 查阅 常见问题解答

自行构建

注意:Closure Compiler 需要 Java 7 或更高版本。

使用 Ant

  1. 下载 Ant 构建工具

  2. 在源代码树的根目录下,有一个名为 build.xml 的 Ant 文件。要使用它,导航到相同的目录并键入命令

    ant jar
    

    这将生成一个名为 build/compiler.jar 的 jar 文件。

使用 Eclipse

  1. 下载并打开 Eclipse IDE
  2. 导航到 文件 > 新建 > 项目 ... 并创建一个 Java 项目。给项目起一个名字。
  3. 选择 从现有源创建项目 并将已签出的源代码树的根目录作为现有目录。
  4. 导航到 build.xml 文件。您将在大纲窗格中看到所有构建规则。运行 jar 规则,在 build/compiler.jar 中构建编译器。

运行

在命令行中,在此项目的根目录下键入

java -jar build/compiler.jar

这将以交互模式启动编译器。键入

var x = 17 + 25;

然后按 "Enter",然后按 "Ctrl-Z"(在 Windows 上)或 "Ctrl-D"(在 Mac 或 Linux 上)和 "Enter" 再次。编译器将响应

var x=42;

Closure Compiler 提供了许多选项,用于从文件读取输入、将输出写入文件、检查您的代码以及运行优化。要了解更多信息,请输入

java -jar compiler.jar --help

有关运行 Closure Compiler 的更详细信息,请参阅文档

编译多个脚本

如果您有多个脚本,您应该使用一个编译命令将它们全部一起编译。

java -jar compiler.jar --js_output_file=out.js in1.js in2.js in3.js ...

您还可以使用 minimatch-style globs。

# Recursively include all js files in subdirs
java -jar compiler.jar --js_output_file=out.js 'src/**.js'

# Recursively include all js files in subdirs, exclusing test files.
# Use single-quotes, so that bash doesn't try to expand the '!'
java -jar compiler.jar --js_output_file=out.js 'src/**.js' '!**_test.js'

Closure Compiler 将按命令行中传递的顺序连接文件。

如果您使用 globs 或许多文件,您可能会遇到脚本之间的依赖关系管理问题。在这种情况下,您应该使用Closure Library。它包含用于强制脚本之间依赖关系的函数,并且 Closure Compiler 将自动重新排序输入。

如何贡献

报告一个错误

  1. 首先确保它确实是一个错误,而不是 Closure Compiler 的工作方式(尤其是对于 ADVANCED_OPTIMIZATIONS)。
  1. 如果您仍然认为您已经发现了一个错误,请确保有人还没有报告过。请参阅已知问题的列表。
  2. 如果尚未报告,请发布一个新的问题。请确保添加足够详细的描述,以便可以重新创建错误。重生产代码越小越好。

建议一个功能

  1. 查阅常见问题解答,以确保您想要的行为没有被明确排除(例如,字符串内联)。
  2. 确保没有人提出过相同的要求。请参阅已知问题的列表。
  3. 阅读有关接受哪些类型的特性请求的说明。
  4. 将您的请求作为问题提交。

提交补丁

  1. 所有贡献者都必须签署一份贡献者许可协议。有关详细信息,请参阅CONTRIBUTORS文件。
  2. 为了确保您的更改是可接受的类型,请在Closure Compiler 讨论组上询问您的补丁。
  3. 分叉存储库。
  4. 进行您的更改。
  5. 提交您的更改的拉取请求。项目开发人员将审查您的工作,然后将您的请求合并到项目中。

Closure Compiler 许可证

版权所有 2009 The Closure Compiler 作者。

根据 Apache 许可证 2.0 版(“许可证”);除非遵守许可证,否则不得使用此文件。您可以在https://apache.ac.cn/licenses/LICENSE-2.0 获取许可证的副本。

除非适用法律要求或书面同意,否则在许可证下分发的软件按照“现状”原则分发,不提供任何形式的明示或暗示保证。有关许可证的具体语言和权限限制,请参阅许可证。

依赖项许可证

Rhino

代码路径 src/com/google/javascript/rhino, test/com/google/javascript/rhino
URL http://www.mozilla.org/rhino
版本 1.5R3,经过大量修改
许可证 Netscape公共许可证和MPL/GPL双重许可证
描述 Mozilla Rhino的部分副本。Mozilla Rhino是JVM上JavaScript的实现。JavaScript解析树数据结构被提取并进行了重大修改,以供Google的JavaScript编译器使用。
本地修改 已重新命名包的空间。删除了所有与解析树无关的代码。添加了JsDoc解析器和静态类型系统。

Args4j

代码路径 lib/args4j.jar
URL https://args4j.dev.java.net/
版本 2.0.26
许可证 MIT
描述 Args4j是一个小巧的Java类库,它使得在CUI应用程序中解析命令行选项/参数变得简单。
本地修改

Guava库

代码路径 lib/guava.jar
URL http://code.google.com/p/guava-libraries/
版本 18.0
许可证 Apache License 2.0
描述 Google的核心Java库。
本地修改

JSR 305

代码路径 lib/jsr305.jar
URL http://code.google.com/p/jsr-305/
版本 svn版本 47
许可证 BSD许可证
描述 用于软件缺陷检测的注解。
本地修改

JUnit

代码路径 lib/junit.jar
URL http://sourceforge.net/projects/junit/
版本 4.11
许可证 Common Public License 1.0
描述 用于编写和运行Java自动化测试的框架。
本地修改

Protocol Buffers

代码路径 lib/protobuf-java.jar
URL http://code.google.com/p/protobuf/
版本 2.5.0
许可证 New BSD License
描述 支持协议缓冲区的库,一种结构化数据的编码。
本地修改

Ant

代码路径 lib/ant.jar, lib/ant-launcher.jar
URL https://ant.apache.ac.cn/bindownload.cgi
版本 1.8.1
许可证 Apache License 2.0
描述 Ant是一个基于Java的构建工具。在理论上,它类似于“make”,但没有make的缺点,并且具有纯Java代码的全端口性。
本地修改

JSON

代码路径 lib/json.jar
URL http://json.org/java/index.html
版本 JSON版本 20090211
许可证 MIT许可证
描述 JSON是一组Java文件,用于在JSON格式中传输数据。
本地修改

Mockito

代码路径 lib/mockito-core.jar
URL https://code.google.com/p/mockito
版本 1.9.5
许可证 MIT许可证
描述 Mockito是一个开源的Java测试框架。该框架允许在自动化单元测试中创建Test Double对象(称为“Mock对象”),用于测试驱动开发(TDD)或行为驱动开发(BDD)。
本地修改

Objenesis

代码路径 lib/objenesis.jar
URL http://objenesis.org
版本 1.2
许可证 Apache 2.0许可证
描述 由lib/mockito-core.jar依赖,但未直接使用。
本地修改

Node.js Closure Compiler Externs

代码路径 contrib/nodejs
URL https://github.com/dcodeIO/node.js-closure-compiler-externs
版本 e891b4fbcf5f466cc4307b0fa842a7d8163a073a
许可证 Apache 2.0许可证
描述 NodeJS API的类型合约
本地修改 对它们进行大量修改,以便与NpmCommandLineRunner兼容。