ClojureScript

REPL 选项

ClojureScript REPL 可以接受几乎所有可以传递给cljs.closure/build的选项,有关详细信息,请参阅编译器选项。此页面记录了其他支持的选项。

请注意,下面在通用选项中介绍的选项应作为编译器选项传递(如果使用cljs.main,则通过-co / --compile-opts),而 REPL 环境特定的选项应作为 REPL 选项传递(如果使用cljs.main,则通过-ro / repl-opts)。

通用选项

:analyze-path

在 REPL 初始化时设置要分析的源路径,以便如果它连接到已经运行的 JavaScript 环境,则先前加载的命名空间的任何符号都可用。也可以设置为要分析的路径向量。

:analyze-path "src"

:def-emits-var

设置在 REPL 评估时def(及其派生)表单是否返回 Var(如果设置为true)或def 初始化值(如果为false)。仅影响在 REPL 评估的表单;编译后的源代码行为如同设置为false。默认值为true

:def-emits-var false

:repl-requires

指定一组库规范(根据require REPL 特殊形式),这些规范将在启动 REPL 时自动加载。默认情况下,规范指的是doc等等,以及pp

:repl-requires [[cljs.repl :refer-macros [source doc find-doc apropos dir pst]]
                [cljs.pprint :refer [pprint] :refer-macros [pp]]]

:repl-verbose

为 REPL 启用详细报告。对调试很有用。默认值为false

:repl-verbose true

这将在打印其评估之前打印编译后的 JavaScript

cljs.user=> (+ 1 2)
((1) + (2))
3

:warn-on-undeclared

覆盖与在 REPL 中使用未声明的变量和不存在的命名空间相关的警告(特别是:unprovided:undeclared-var:undeclared-ns:undeclared-ns-form)。默认值为true

:warn-on-undeclared false

:watch

监视源目录以进行重新编译,以避免启动额外的 JVM。

:watch "src"

:watch-fn

:watch-fn (fn [] (println "built!"))

一个无参数函数,在成功构建后运行。

浏览器 REPL 选项

这些选项仅适用于与 ClojureScript 捆绑在一起的浏览器 REPL。

:launch-browser

默认情况下,启动浏览器 REPL 会启动与操作系统配置的默认浏览器连接回它。可以通过将此选项设置为false来禁用此行为,在这种情况下,系统会提示您使用类似于以下消息的连接:

Waiting for browser to connect to https://127.0.0.1:9000 ...
:launch-browser false

:working-dir

编译后的 REPL 客户端 JavaScript 将存储的目录。默认值为“.repl”,带有一个 ClojureScript 版本后缀,例如“.repl-1.9-946”。

:static-dir

要搜索静态内容的目录列表。默认值为["." "out/"]

:src

包含用户定义的 cljs 文件的源目录。用于支持反射。默认值为"src/"

Node REPL 选项

:host

Node 子进程侦听 REPL 流量的主机。

:host "localhost"

:port

Node 子进程侦听 REPL 流量的端口。

:port 49152

Graal.JS REPL 选项

执行js --help:languages将显示 Graal.JS 特定的选项列表。任何以“js.”开头的字符串键的 REPL 选项都将传递给 Graal.JS 引擎。这些条目应该具有字符串值。

以下是一个启用和使用 ECMAScript 国际化 API 的示例

$ clj -M -m cljs.main -re graaljs -ro '{"js.intl-402" "true"}' -r
cljs.user=> (def gas-price (js/Intl.NumberFormat. "en-US"
                             #js {:style "currency"
                                  :currency "USD"
                                  :minimumFractionDigits 3}))
#'cljs.user/gas-price
cljs.user=> (.format gas-price 5.259)
"$5.259"