./script/uberjar
要报告问题,请在 ask.clojure.org 上的 ClojureScript 类别下提出一个问题,并用 problem
标签标记它。CLJS 开发人员可以评估并确定它是否是一个问题。如有必要,他们可以在 ClojureScript 问题跟踪器 中提交一个工单。
重要的是,在提交任何问题之前,您必须先彻底了解 快速入门。即使您是经验丰富的 ClojureScript 开发人员,这也是必读内容。
此外,确保您正在运行最新版本的 ClojureScript 会很有帮助。此外,检查 ClojureScript master 是谨慎的做法——当发现错误时,修复通常会很快提交(参见下面的说明)。
然而,必须使用 ClojureScript 本身来报告错误。下游工具通常以非平凡的方式与 ClojureScript 编译器交互,隔离 ClojureScript 问题的最佳方法是从报告中完全删除它们。
请通过从 master 构建 uberjar 并使用它来验证问题来报告问题。使用 cljs.main
与此 uberjar 创建一个最小的再现是理想的选择。或者,使用 clj
和 deps.edn
是可以接受的。不要使用任何其他第三方工具(Maven、Leiningen、Boot)。创建问题时,请将所有相关的说明和代码添加到工单中,以便直接或通过其他评论进行重现。请不要附加项目、项目链接、gist/pastebin 链接或压缩文件。
引导问题可能需要特殊考虑。有关更多详细信息,请参阅 报告引导问题。 |
验证问题时,首先检查问题是否已经在 master 中解决可能会有所帮助。不要使用此方法报告问题,它仅用于方便您自己验证 master。签出 ClojureScript 存储库。从项目的根目录运行以下命令
./script/build
这将把 ClojureScript 安装到您的本地 Maven。注意版本号(当它滚动出现时)。根据需要将其用于您的工具。
如果您发现回归,在报告问题时识别有关第一个错误提交的信息将很有帮助。通过首先依赖于 ClojureScript 的签出作为本地根依赖项,然后使用 git bisect
,这很容易做到。
例如,假设您发现了一个可以直接在 REPL 中重现的回归(如果不是,则可以使用下面的变体)。
首先签出 ClojureScript master 并 cd
到签出树的顶部。
假设您可以在 master 上重现问题,但 ClojureScript 1.10.748 工作正常,请在签出树的顶部发出以下命令
git bisect start
git bisect bad HEAD
git bisect good r1.10.748
然后(在另一个目录中)通过发出以下命令启动一个针对签出树当前状态的 REPL
clj -Srepro -Sdeps '{:deps {org.clojure/clojurescript {:local/root "/<path-to-checkout>/clojurescript"}}}' -m cljs.main -r
测试您是否可以在 REPL 中重现问题,然后退出 REPL。
如果您无法重现问题,请在 ClojureScript 签出树中发出以下命令
git bisect good
或者,如果您能够重现问题
git bisect bad
如果二分搜索完成,git
将表明某个提交哈希是“第一个错误提交”。将所有这些文本复制到 JIRA 中。
否则,重新启动 REPL 并重复上述步骤,直到完成。
完成后,您可以发出以下命令来恢复您的 ClojureScript 签出
git bisect reset