2024年Clojure状态调查!中分享您的观点。

欢迎!请参阅关于页面以了解更多有关该功能的详细信息。

0
Clojure

我在Windows上运行(非WSL),并且根据这里的说明已经安装了工作的Clojure/Lein。

https://dev.to/adasomg/10-life-changing-minutes-with-clojure-windows-3ofl

现在我想根据https://www.learn-clojurescript.com上的教程开始使用ClojureScript。它想要使用clj作为ClojureScript的构建工具,它引用了主网站上的安装说明,最终指向这里

https://github.com/clojure/tools.deps.alpha/wiki/clj-on-Windows

但是该程序假定您还没有安装Clojure,而我已经安装了。有没有办法为Windows单独获取clj工具?

2 答案

+1

选择
 
最佳答案

您应该能够使用cider的powershell工具集使它运行。

https://docs.cider.mx/cider/basics/up_and_running.html#clojure-cli-options

在这里我取得的成绩有限。在过去对Windows进行操作时,为了datomic培训日(仅涉及tools.deps...),我只是启动了带有PowerShell版本和nrepl别名的repl,并在启动后通过cider-connect 连接到它。一切顺利。

有一些封装的二进制程序,如https://github.com/borkdude/deps.clj,理论上可以作为备用命令提供。希望现在PowerShell变体已经可以正常工作(至少与cider一样)。

感谢您向我指出deps.clj。它与我的需求完美契合。
0

《clj》命令用于Clojure命令行界面(CLI),这是一个与《lein》不同的工具,因此是单独安装的。

Leiningen项目使用《project.clj》文件来描述依赖项、插件等。

Clojure CLI项目使用《deps.edn》文件来描述依赖关系等。

它们是处理Clojure的两种不同方式。

"Clojure"本身实际上只是作为项目依赖项使用的库 -- 真的不需要“安装”。自Clojure 1.9以来,没有可以下载并使用的单个JAR文件 -- 你必须将Clojure作为依赖项使用 -- 因此你需要使用一些工具来为你处理依赖关系管理:要么是Leiningen,要么是Clojure CLI(或Boot,但你没有询问这一点)。

是的,我认为我理解了所有这些。据我所知,"clojure cli"是我试图使其工作的clj命令行工具。我已经有了clojure和lein的工作状态,但我正在使用的clojurescript教程想要使用clojure cli工具(clj)。

我看到要为Windows获取CLI工具的唯一说明是安装clojure jar,据我所知,在我的情况下这似乎是多余的,因为Leiningen已经可以工作。

我在这里错过了什么?
您需要按照步骤安装Clojure CLI("clj"命令)。这将使用Clojure安装JAR文件,但请不用担心。Clojure CLI和Leiningen都使用相同的Maven本地仓库来存储JAR文件,并且它们可以使用相同的一个(但它们默认可能使用不同的版本)。您已经走上了正确的道路,只需继续前进。

修改
是的,这行了,但这对我有点麻烦,因为工具现在是托管在PowerShell中而不是老式的Windows命令处理器中。我习惯在emacs中托管这种shell,所以只为这种用例设置另一样东西会有些麻烦。真遗憾没有更接近Windows下"lein.bat"的东西,这样像我这样的用户就可以更进行“ apples to apples”的比较。

无论如何,我相信我可以通过Clojurescript和lein做成一些事;我只是在希望作为教育实践更好地理解这个替代工具集——重叠和冲突的工具集有些混乱。
(已编辑 — 不小心重复发帖)
顺便说一句,我认为目前在Windows上最好的开发环境是使用WSL2并在其中运行所有Clojure/Script相关的内容——因为一切都会“自然而然”地在Linux上工作,因为几乎所有Clojure/Script项目都针对macOS/Linux进行构建。我就是用这种方法在Windows上使用120k行Clojure代码库,同时使用Docker来配置Elastic Search、Redis、Percona等,一切按照教程和书籍中的说法都可以正常运行。Windows在Clojure领域始终处于二等公民的地位,你会发现相当多的教程和项目要么在Windows上完全不工作,要么需要一些变通才能工作。
是的,我已经在标准的clojure上也遇到了这些痛点。

我一直在考虑使用WSL2,但我读了一些关于它在与VPN一起使用时不友好的负面评论,而这正是我现在在家工作的常态。
我用VPN访问我们的QA/生产服务器,并没在WSL2上遇到任何奇怪的问题——我可以从WSL2顺畅地访问那些服务器。你有关于“负面评论”的文章链接吗?
我第一次的迹象是底部附近的这条评论 from pauljohn32:

https://adamtheautomator.com/windows-subsystem-for-linux/

然后检索“wsl vpn冲突”可以找到很多信息,包括以下这个在wsl github页面上的公开问题(第一个搜索结果):

https://github.com/microsoft/WSL/issues/5068

之后我没有进一步挖掘以弄清具体细节。也许你可以根据你的个人经验和你所看到的,来明确这个问题。
by
我已经将Windows VPN连接到我们的服务器集群(使用内置VPN,但在服务器端是思科的VPN),我还是能够从WSL2 curl到任何服务器——无论是在DMZ内还是外,并且我可以在WSL2上启动Google Chrome并与任何我希望交互的网站进行交互,同时VPN已连接。我没有/etc/wsl.conf,所以我将自动为我生成/etc/resolv.conf文件。

我目前使用的是Windows 11上最新的WSL2版本(我已经使用各种预览版软件超过七年了)。我觉得WSL2推出后不久,确实遇到了一些网络相关的问题,但是我已经很久没有遇到过任何问题了。
by
支持似乎取决于特定VPN的情况,有的好有的不好
...