我正在考虑为 shadow-cljs 编写一个 deps.edn 工具实现。主要是因为 clj -Ttools install-latest
可以轻松安装。类似于 npm install shadow-cljs
,尽管我并没有打算取代它。只是提供另一种选择。
但是,我完全不同意预设参数解析的功能,我希望可以取消选择这一功能。这已经考虑过了吗?
所有工具都通过 clojure map 来调用。然而,工具已经存在并具有自己的参数解析。我希望避免需要调整所有现有的文档,并总是提到两种调用方式。
例如,目前您最常运行的命令是
npx shadow-cljs watch app
或者,翻译成我想为工具使用的样子
clj -Tshadow-cljs watch app
我认为这是无效的,因为它在 watch
函数后期望键值对。所以它可能需要像这样的东西
clj -Tshadow-cljs watch :build :app
目前这可以通过使用 clojure.main
的传统方式实现
clj -M:shadow-cljs watch app
但这需要创建别名并手动指定 :main-opts
。它也无法真正利用 -Tinstall-latest
。
我想到了很多让工具选择退出这种行为的办法。无论是通过在它们的 deps.edn
的 :tools/usage
映射中直接指定,还是通过在命名空间或 vars 上的 CLJ 元数据直接实现,因为工具已经解析了这些。
(ns my.tool
{:tools/usage {:parse-args false}}
...)
;; and/or
(defn watch
{:tools/usage {:parse-args false}}
[& args] ;; just the usual strings array
...)
我觉得这个问题以前讨论过,但我找不到。另外,clojure.run.exec
助手属于哪个库?我找不到它。