请在 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

我在这里取得了一些有限的成果。在我过去只使用 tools.deps...进行 Datomic 培训时在 Windows 上工作,我只是启动了 powershell 版本的 repl 和一个 nrepl 别名,通过 cider-after 启动后连接到它。工作得还可以。

理论上可以提供一些包装的二进制文件作为替代命令,例如: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 和 Leiningen 已经在运行,但我在使用的 clojurescript 教程希望使用 Clojure CLI 工具(clj)。

我所看到的唯一关于获取 Windows CLI 工具的说明是安装 Clojure JAR,在我看来这在我的情况下应该是多余的,因为 Leiningen 已经工作。

我在这里遗漏了什么?
您需要按照步骤安装Clojure CLI(即“clj”命令)。这将使用Clojure并安装jar包,但请放心,这只是例行公事。Clojure CLI和Leiningen都使用相同的Maven本地仓库来存储jar包,它们可以使用同一个仓库(但默认情况下它们可能使用不同版本)。您走在了正确的道路上,只需继续前进。
by
编辑 by
是的,这确实有效,但这对我来说有点麻烦,因为工具托管在一个powershell中,而不是老式的Windows命令处理器。我习惯于在emacs中运行这种类型的shell,所以只为这种用例设置其他东西会挺麻烦的。遗憾的是,没有更接近Windows上“lein.bat”的东西,这样像我这样的人们就可以更多地比较Leiningen。

不管怎样,我相信我可以用clojurescript和lein获取某些东西运行起来;我只是希望通过这个教育练习更好地理解这个替代工具链——重叠和冲突的工具链有点混乱。
by
(编辑 - 不小心重复发布了上一条回复)
by
关于这个话题,我认为在Windows上当前最好的开发环境是使用WSL2,并在那里运行所有的Clojure/Script相关内容——因为由于绝大多数Clojure/Script项目都是面向Linux的,所以所有东西在Linux上都能“Just. Work.”。我就是这样在Windows上一个有12万行Clojure代码库上工作的,我还使用了Docker来运行Elasticsearch、Redis和Percona,以及所有教程和书籍都在这种方式下正常工作。Windows在Clojure世界中始终是第二选择的,你也会发现很多教程和项目要么完全在Windows上无法工作,要么需要一些解决方案来解决某些问题。
是的,我也在使用标准的clojure时遇到了这些问题。

我一直想尝试WSL2,但后来我在一些负面信息中了解到,当你使用VPN时,WSL2的表现不佳,而这正是我现在经常在家工作的场景。
我用VPN访问我们的QA/production服务器,并在WSL2中没有遇到过任何奇怪的问题——我可以通过VPN从WSL2中很好地访问这些服务器。你有关于“恶劣事情”的文章链接吗?
我的第一次迹象是在pauljohn32在页面底部的评论附近

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

然后,谷歌搜索“wsl vpn冲突”出现了很多结果,包括以下Wsl GitHub页面上的一个开放问题(第一次搜索结果)

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

在那之后,我没有进一步挖掘细节。也许你可以根据你个人的经验和你看到的情况来澄清这个问题。
by
我刚刚将Windows VPN连接到我们的服务器集群(使用的是内置VPN,但服务器端是思科的设备),我仍然可以从WSL2对任何服务器进行curl操作--无论是在DMZ内部还是外部--同时我可以在WSL2上启动Google Chrome并与我想要的任何网站进行交互,而VPN已经连接。我没有/etc/wsl.conf文件,所以我的/etc/resolv.conf文件是由系统自动生成的。

我现在使用的是Windows 11上的最新版WSL2(我已经使用了近七年的所有内测版)。我想在WSL2推出不久后,确实存在一些与网络相关的问题,但已经有一段时间没有遇到任何问题。
by
支持似乎因特定的VPN而异
...