嗨,
从 cljs 1.10.748+ 开始,当请求节点编译且未明确指定 outdir 时,会创建 `.cljs_node_repl` 目录作为输出目录,而不是 out
。
默认的输出编译目录在 cljs.main -h
帮助中未提及,但据 https://script.clojure.org/reference/repl-and-main 中的说法,默认应为 out
。
编译源码
要编译 ClojureScript 源代码,通过
通过 -c 选项传递主命名空间给
java -cp src:cljs.jar cljs.main -c my-namespace.core
输出将写入由 -d
选项指定的目录(或未指定时为 out),或写入由 -o
选项指定的文件。
要重现
1. 下载 clojurescript 1.10.742 和 clojuresript 1.10.748 的 JAR 文件,https://github.com/clojure/clojurescript/releases
2. 从 https://script.clojure.org/guides/quick-start 创建入门级的 hello world 程序。
3. 执行 java -cp "src;cljs-1.10.748.jar" cljs.main -t node -c hello-world.core
,观察到一个 `.cljs_node_repl` 目录被创建,而不是预期的 `out
` 目录。
如果用更早的版本运行相同的命令,例如 java -cp "src;cljs-1.10.742.jar" cljs.main -t node -c hello-world.core
,可以观察到会创建一个预期的 `out
` 目录。
这看起来像一个回归。
解决方法是明确指定目录,例如 java -cp "src;cljs-1.11.60.jar" cljs.main -t node -d out -c hello-world.core
。
谢谢