2024 年 Clojure 调查》中分享您的看法!

欢迎!请参阅关于页面了解更多有关其运作方式的信息。

+7
工具
重标签

基于 Slack 反馈,我建议在 tools.deps 中支持简写命令。

这将类似于 Leiningen 中的“别名”或 NPM 中的“scripts”。但不是 tools.deps 当前的“别名”。
这将允许人们隐藏等等。
clj -X:graph graph :deps '"mydeps.edn"' :trace true :output '"trace"
后面
clj graph

在实施此方案后的一些用户命令示例

clj start     ; Similar to npm
clj run       ; Inspired by lein run
clj backend   ; Step 1 .. 
clj frontend  ; Step 2 ..
clj devcards  ; Step 3 of firing up a fullstack project with some extras.

它应该如何工作,我将留给实现者来决定。如果必须有保留的 runstart 来实现例如 clj run backend,那么就是这样。但越短越好。我所说的“简写命令”只是一个用来区分已被占用的“别名”的术语。

我认为这个小小的糖分会以几种方式清理它,我将在以下内容中尝试捕捉到这一点。

添加此内容的一些好处

  • 很好地符合使用 Leiningen 和 NPM 等工具的知识
  • 所有内容都在一个 deps.edn 文件中。
  • 个人和公司可以有自己的约定,在整个项目中重用相同的简写,这使得知道如何启动一个项目变得非常简单。
  • 项目文档和指南可以展示简洁的命令。

我知道 tools.deps 不打算取代 Leiningen,但它在 Clojure(script) 小社区中造成了一些碎片化,无论是故意的还是不是故意的,我的感觉是,它正在作为替换品使用,没有其他工具围绕它。当然,您仍然可以使用 lein,但似乎已经有足够多的人过渡到了这一点,它几乎成为必修课了。还有 Boot 以及可能还有其他工具,但我感觉用户群要小得多。

我可以应对并解决这个问题,但在编写这些长命令或记录项目时,我感觉到有某种退步。基本上,我在完成 deps.edn 的初始配置之后,似乎在任何高层次工作了一下。

一些接近目前 tools.deps 命令的方法

  • 手动编写:当然可能,但需要更多的知识、经验、良好的记忆力,这取决于设置的复杂性和项目的相似性。
  • 从 README.md 等处复制粘贴:工作得不错,但您必须参考文档,它使 Clojure 的复杂性看起来远远超过了它所需要的。
  • Shell 脚本:将更多文件添加到项目中,比 deps.edn 自包含时传播信息更广。
  • Shell 命令历史:在编码会话期间或连续多日工作时易于访问,但几周或几个月后则不易访问。
  • 其他对此进行封装的工具。

因此,我并不是在说当前情况不可能管理,Clojure 似乎拥有比平均水平更高的技术熟练度用户群,但我认为它可以也应该更干净。我真的看不到有什么干净易读的操作会伤害到什么。当前的工作方式在我看来也有些精英主义。

虽然做出这个改进不会改变分裂,除非在极不可能的情况下完全取代 Leiningen,但至少会使两者更协调。

附加功能
也许它还应该支持在简写之后添加覆盖(例如,clj backend -M:foo),在同一个命令中执行多个简写(例如,clj backend frontend)或类似功能,但这目前并不是我强烈的看法。

我希望这些相对个人的观点足以解释为什么这可能是值得的。

最后,想象一下,在未来,如果你要给一个苹果用户开始使用一些非常好的全栈 Clojure(script) 工作做准备,你需要提供类似这样的所有说明。

brew install clojure
clj new re-frame/app my-app
cd my-app
clj start

这个请求不仅仅是在 tools.deps 中添加一些优雅的模板功能,它只是说明了非常流畅的体验可能是什么样子。从零开始,只需几步就能进入 Clojure(script) 开发的最高生产力体验将会很棒。当然,你不会立刻成为专家,但你可以从编辑文件开始,看到例如热代码重载功能直接工作。

1 答案

0

我正在考虑为 babashka 实现一个类似的功能。bb 0.3.3 已包含了这个功能的预览。例如:

https://github.com/borkdude/antq/blob/bb-run/bb.edn

更多信息:https://github.com/babashka/babashka/issues/778

...