从命令行管理`project.clj`中的依赖项

6
我想从命令行搜索和安装Clojure的依赖。是否存在一种工具/leiningen命令/lein change脚本,可以实现以下功能:
  • 在线搜索Clojure库
  • 重写project.clj文件以包含依赖(最新版本)
  • 更新依赖项?
这类似于npm install --save--save-dev)和npm search,对于熟悉npm(JS / Node包管理器)的人来说。
(也许boot提供了更像npm的工作流程?)
3个回答

6
您可以在其插件 Wiki页面上找到所有Leiningen插件的完整列表。
我刚刚查看了开发工具部分,并发现两个可能会引起您兴趣的插件:
  • lein-plz - 一个Leiningen插件,用于快速向项目添加依赖。
  • lein-ancient - 一个Leiningen插件,用于检查项目是否存在过时的依赖和插件。
以下是使用lein-plz添加新依赖项的示例(来自其自述文件):
$ lein plz add core.async cljs data.json

以下是使用lein-ancient更新过时依赖项的示例(来自其自述文件):

$ lein ancient upgrade-profiles [<options>]

为什么它不能构建到lein中?对我来说,这似乎是一个必要的功能。 - Bogdan Slovyagin

3
我认为lein-ancient是你需要的。我使用它已经有一段时间了,发现它很可靠。您可以让它自动更新,也可以只获取报告然后手动更新。您还可以告诉它您只想要生产版本还是OK与快照等。
但它并不完美,因为它严重依赖于开发人员提供有关其库的信息。当开发人员进行更改并且没有递增版本号或使用不寻常的版本编号方案时,我偶尔会遇到问题。但这种情况很少见。
就个人而言,我不喜欢一次性更新大量库。这可能会使识别和解决问题变得困难。因此,我倾向于在项目上运行lein ancient,然后决定是否要全部、部分或不更新,然后手动进行更改。通常最好只获取报告,然后快速检查源站点以查看可能发生了什么变化,以确保它不会破坏我的代码,或者帮助减少搜索空间(如果出现问题)。最糟糕的事情莫过于升级一堆库,然后花费数小时跟踪编译/运行问题——这会使你的热情受到抑制!

谢谢,很好。我的措辞有点不清楚,我写了“更新”,但实际上是指“重写project.clj文件”。尽管如此,你的回答还是很有趣的!谢谢。 - wires

1

好的,根据评论中的澄清,我建议看一下一些Clojure代码检查工具。虽然大多数专注于您的项目代码树,但有些也会检查您的project.clj文件。我想不到一个工具可以完成所有任务,但有许多单独的工具可以帮助您完成一些小部分。您可以使用lein任务和别名来自动化一些过程,如果您正在使用emacs,则有一些附加组件可以帮助一些。

  • Eastwood:这个插件具有一个里程碑式的功能,它将检查项目.clj中的:dependencies部分,并识别未使用的依赖项。虽然尚未实现,但值得关注,我认为这是一个有用的插件(由lein的作者编写)

  • slamhound:该插件将检查您的命名空间声明并清理它们,以便它们只包含所需的内容。在我看来,任何可能能够重写您的project.clj文件的工具都需要这样做

  • kibitbikeshed:这两个插件将寻找可能的清理和代码改进,以帮助保持代码一致性和更具表现力

许多此类工具可能很有用,但它们的有效性可能受到您Clojure代码库的“质量”的限制。如果您的代码尽可能一致和惯用,我发现使用这些工具会获得更好的结果。运行bikeshed->kibit->slamhound->eastwood对我来说似乎提供了很好的功能。
如果您使用emacs,您可能还会发现clj-refactor.el很有用。还要注意,lein确实具有搜索功能 - 如果需要更新索引,则可能会很慢,但之后会变得相当快。然而,作为一般搜索工具,它并不那么实用,但如果您只是想找到库名称和版本,以便将它们添加到依赖项中,则可以非常有用 - 在我寻找解决问题的库时(而不是仅需获取名称和版本号的特定已知库时),我倾向于使用Google和一些可以收集可用库信息的网站。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接