scribe / closurecompiler-library
这是 Google 的 Closure Compiler 的一个最新分支,与上游保持同步,只是这个版本附带 composer 文件。
This package is not auto-updated.
Last update: 2022-02-01 12:39:59 UTC
README
The Closure Compiler 是一个用于使 JavaScript 下载和运行更快的工具。它是一个真正的 JavaScript 编译器。它不是从源语言编译到机器代码,而是从 JavaScript 编译到更好的 JavaScript。它解析你的 JavaScript,分析它,删除死代码,并重新编写和最小化剩余的部分。它还检查语法、变量引用和类型,并警告常见的 JavaScript 陷阱。
入门
- 下载最新版本
- 查看 Google 开发者网站 上的文档,包括如何从命令行运行编译器的说明。
获取帮助的选项
- 在 Closure Compiler 讨论组 中发帖
- 在 Stack Overflow 上提问
- 查阅 常见问题解答
自行构建
注意:Closure Compiler 需要 Java 7 或更高版本。
使用 Ant
-
下载 Ant 构建工具。
-
在源代码树的根目录下,有一个名为
build.xml
的 Ant 文件。要使用它,导航到相同的目录并键入命令ant jar
这将生成一个名为
build/compiler.jar
的 jar 文件。
使用 Eclipse
- 下载并打开 Eclipse IDE。
- 导航到
文件 > 新建 > 项目 ...
并创建一个 Java 项目。给项目起一个名字。 - 选择
从现有源创建项目
并将已签出的源代码树的根目录作为现有目录。 - 导航到
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 将自动重新排序输入。
如何贡献
报告一个错误
- 首先确保它确实是一个错误,而不是 Closure Compiler 的工作方式(尤其是对于 ADVANCED_OPTIMIZATIONS)。
- 查看官方文档
- 查阅 常见问题解答
- 在Stack Overflow 和Closure Compiler 讨论组中搜索
- 如果您仍然认为您已经发现了一个错误,请确保有人还没有报告过。请参阅已知问题的列表。
- 如果尚未报告,请发布一个新的问题。请确保添加足够详细的描述,以便可以重新创建错误。重生产代码越小越好。
建议一个功能
- 查阅常见问题解答,以确保您想要的行为没有被明确排除(例如,字符串内联)。
- 确保没有人提出过相同的要求。请参阅已知问题的列表。
- 阅读有关接受哪些类型的特性请求的说明。
- 将您的请求作为问题提交。
提交补丁
- 所有贡献者都必须签署一份贡献者许可协议。有关详细信息,请参阅CONTRIBUTORS文件。
- 为了确保您的更改是可接受的类型,请在Closure Compiler 讨论组上询问您的补丁。
- 分叉存储库。
- 进行您的更改。
- 提交您的更改的拉取请求。项目开发人员将审查您的工作,然后将您的请求合并到项目中。
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兼容。 |