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

我在这方面取得了一些有限的成果。在过去,在用powershell版本和nrepl别名启动repl并为datomic培训(仅限tools.deps...)时,我发现效果不错。启动后,使用cider连接到cider。

理论上可以提供一些封装的二进制文件作为备用命令,例如 https://github.com/borkdude/deps.clj。希望现在 PowerShell 版本可以直接使用(至少与 cider 一起配合使用)。

by
感谢您指出 deps.clj。它完美符合我的需求。
0
by

clj 命令是用于 Clojure CLI 的,它是一个与 lein 不同的工具,因此需要单独安装。

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

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

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

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

by
是的,我明白这些。IIUC,“clojure cli”是我试图工作的 clj 命令行工具。我 Clojure 和 Leiningen 已经运行,但我正在使用的 clojurescript 教程想要使用 clojure cli 工具(clj)。

我看到的获取 Windows 的 CLI 工具的唯一说明是安装 Clojure JAR(如我所知),我认为在这种情况下是多余的,因为 Leiningen 已经工作。

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

编辑
是的,这有效,但这对我不太方便,因为这些工具托管在Windows PowerShell而不是传统的Windows命令处理程序中。我已经习惯了在emacs中托管这种Shell,因此只为这种用例设置其他东西会比较麻烦。真希望有一种更接近Windows下"lein.bat"的东西,这样像我们这样的人就可以更好的对Leiningen进行“苹果对苹果”的比较。

无论如何,我相信我可以用Clojurescript和Leiningen让它工作;我只是希望作为一个教育练习来更好地理解这个工具链——重叠和冲突的工具链有点混乱不清。
(编辑 —— 不小心重复发布了之前的回复)
就我个人看法,目前Windows上最佳的开发环境是使用WSL2,并在其中运行Clojure/Script项目——因为Linux系统上几乎所有Clojure/Script项目都能“直接”运行。我就是这样在Windows上使用Docker运行Elasticsearch、Redis和Percona,并且所有这些均在相关教程/书籍中得到了验证。Windows在Clojure世界中一直处于二等公民的地位,你可能会发现很多教程和项目在Windows上无法正常使用,或者需要对某些功能进行折中处理。
by
是的,我已经在使用标准clojure时遇到了这些痛点。

我曾经试图尝试WSL2,但后来我读到一些关于它与VPN不兼容的负面评论,而这正是我目前平时在家办公的情况。
by
我使用VPN访问我们公司的QA/生产服务器,并没有在WSL2上遇到任何奇怪的问题——我可以正常通过VPN从WSL2访问这些服务器。你有关于那些“恶心评论”的相关文章链接吗?
by
我的第一个迹象是页面底部pauljohn32的评论

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

在谷歌搜索“wsl vpn冲突”会发现很多相关内容,包括wsl guitarist页面上的以下开放问题(第一个搜索结果)

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

之后我没有进一步挖掘以确定确切细节。也许你可以根据你个人的经验和所见来澄清这个问题。
我刚将Windows VPN连接到我们的服务器集群(使用了内置VPN,但服务器端是思科的东西),我仍然可以从WSL2中对任何服务器进行curl操作,无论是在DMZ内部还是外部,并且我可以启动WSL2上的chrome浏览器并与我想要的任何网站进行交互,而VPN连接依然保持。我没有/etc/wsl.conf,所以我自动生成了/etc/resolv.conf文件。

到目前为止,我在Windows 11上使用的是最新的WSL2版本(我使用了一个多过七年的所有产品的内测版)。我认为在WSL2推出不久后,曾经有一些与网络相关的问题,但我已经很长时间没有遇到任何问题了。
根据特定的VPN,支持情况不一。
...