标签: deps-edn

Clojure:如何判断代码是在 REPL 还是 JAR 中运行?

我正在 Clojure 中编写一个名为OneCLI的 CLI 框架。该框架的主要中心部分是一个名为的函数go!,它“为您”解析命令行、环境变量和配置文件,并根据这些输入中提供的内容运行几个不同的用户提供的函数之一。

通常,go!-main用户调用 Clojure 程序的函数中调用。我用我自己的库,例如,在另一个叫“uberjar”风格应用ZIC。该函数作为其运行的一部分进行go!调用System/exit,并向其传递来自用户提供的函数结果的退出代码。这在“生产中”效果很好,但这也意味着我无法zic.cli/-main从 REPL运行该函数,因为每当我调用它时System/exit并且 REPL 退出时。

在你问之前,在树莓派上开发时从 REPL 运行它可以避免昂贵的 45 秒运行lein uberjar/1 分 30 秒运行clj -X:depstar uberjar :jar ...

我的问题是:是否有一些 var 或 value 我可以检查作为 Clojure 标准库的一部分,告诉我的 OneCLI 代码它是从 REPL 运行还是从 JAR 运行?

这样的变量将使我能够在 OneCLI 中检测到我们正在从 REPL 运行,以便它可以避免调用System/exit.

clojure leiningen read-eval-print-loop deps-edn

2
推荐指数
1
解决办法
374
查看次数

在 Clojure 项目中存储项目版本号的常见约定是什么?

我们的团队正在处理使用 deps.edn 的 Clojure 项目

我们习惯于 NPM 项目,将版本号存储在 package.json 文件中。看来 Leiningen 用户之前可能已将版本号存储在 project.clj 文件中。是否有针对 Clojure 项目版本控制的社区范围惯例​​?我看到人们和官方文档提到使用 Git 标签,但想知道使用 deps.edn 的开发人员是否有某种流行的方式将版本号存储在文件中。

谢谢你!

versioning version clojure leiningen deps-edn

1
推荐指数
1
解决办法
466
查看次数