mvn clean && mvn -DskipTests -pl externs/pom.xml,pom-main.xml,pom-main-shaded.xml
ClojureScript 与 Google Closure Compiler 紧密集成。许多 ClojureScript 特性,如 Node / ES6 模块处理,实际上是通过 Google Closure Compiler 支持提供的。在这些领域,对 ClojureScript 的贡献是通过直接贡献给 Google Closure Compiler 项目本身来完成的。
Closure Compiler 团队使用 GitHub 来管理项目,并且对于附带提供解决方案的拉取请求的问题特别响应。为了贡献到 Closure Compiler 项目,您必须提交 Google 贡献者协议。
虽然文档很少,但 Closure Compiler 的 Java 代码库出奇地易于使用。使用免费的 Java IDE,如 IntelliJ Community Edition,可以极大地简化探索和理解 Closure Compiler 源代码。在定位 Closure Compiler 错误的根源时,Java IDE 还具有强大的步进调试工具的额外优势。
一旦您认为自己找到了解决方案,请创建一个包含您的修复的分支,然后创建一个测试用例。
找到您的单元测试的合适测试用例文件。要测试您的特定测试,您必须首先构建 Closure Compiler
mvn clean && mvn -DskipTests -pl externs/pom.xml,pom-main.xml,pom-main-shaded.xml
此时,除非您需要重新编译编译器更改,否则您只需编译并运行您的测试用例,这需要更少的时间。在以下内容中,将 TestClass#testMethod
替换为您正在测试的类和方法。
mvn -pl pom-main.xml compiler:testCompile surefire:test -Dtest=TestClass#testMethod
一旦您的测试通过,如果您还没有创建包含您的修复的分支,请创建一个分支并提交拉取请求。您的拉取请求可能应该链接到一个相应的 GitHub 问题。
最后一步是验证您的修复实际上解决了 ClojureScript 中的问题。
构建 Closure Compiler
mvn clean && mvn -DskipTests -pl externs/pom.xml,pom-main.xml,pom-main-unshaded.xml
这将在您的本地 Maven 中安装未阴影的 JAR,请注意版本。在 ClojureScript 仓库中,使用您喜欢的任何工具(例如,编辑 project.clj 或 deps.edn)更改 Closure Compiler 工件的依赖关系信息。
通过 ClojureScript 特定的测试验证 ClojureScript 问题是否已解决。