从 Clojure 1.10.1-beta1 开始,非 REPL 环境中的错误使用 `ex-str` 处理,这很好,因为 `ex-str` 会调用 `*explain-out*`,而 `*explain-out*` 可以由用户配置。
但是,关于如何最佳配置 `s/*explain-out*` 以确保在加载其他命名空间之前运行此配置,并没有明确的指南。也许 'user.clj' 是正确的位置,但所有非 REPL 任务都会加载吗?
例如,此代码会设置 Expound,但现在我不确定如何在其他命名空间加载之前可靠地运行它
(require '[expound.alpha :as expound] '[clojure.spec.alpha :as s])
(alter-var-root '#'s/*explain-out* (constantly (expound/custom-printer {:print-specs? false :show-valid-values? true :theme :figwheel-theme})))