Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 从命令行管理“project.clj”中的依赖项_Clojure_Leiningen - Fatal编程技术网

Clojure 从命令行管理“project.clj”中的依赖项

Clojure 从命令行管理“project.clj”中的依赖项,clojure,leiningen,Clojure,Leiningen,我想从命令行搜索并安装clojure依赖项 是否存在工具/leiningen命令/lein changescript?/。。。这可以: 在线搜索clojure图书馆 重写project.clj以包含依赖项(最新版本) 更新依赖项 对于那些熟悉(JS/Node包管理器)的人来说,大致可以使用(--save dev)和npm search) (可能提供更像npm的工作流?您可以在其网站上找到所有Leiningen插件的完整列表 我刚刚浏览了这一部分,发现了两个您可能感兴趣的插件: -用于快速向

我想从命令行搜索并安装clojure依赖项

是否存在工具/leiningen命令/
lein change
script?/。。。这可以:

  • 在线搜索clojure图书馆
  • 重写
    project.clj
    以包含依赖项(最新版本)
  • 更新依赖项
对于那些熟悉(JS/Node包管理器)的人来说,大致可以使用(
--save dev
)和
npm search


(可能提供更像npm的工作流?

您可以在其网站上找到所有Leiningen插件的完整列表

我刚刚浏览了这一部分,发现了两个您可能感兴趣的插件:

  • -用于快速向项目添加依赖项的Leiningen插件
  • -一个Leiningen插件,用于检查项目是否存在过时的依赖项和插件
下面是使用
lein plz
()添加新依赖项的示例:

以及使用
lein-again
()更新过时依赖项的示例:

$lein古代升级配置文件[]
我想这就是你想要的。我已经用了很长一段时间,发现它相当可靠。您可以让它自己进行更新,或者只是获取一份报告,然后手动进行更新。您还可以告诉它您是否只需要生产版本,或者是否可以使用快照等

它并不完美,因为它严重依赖于开发人员提供的有关其库的信息。当开发人员进行了更改,或者没有增加版本号,或者使用了不寻常的版本编号方案时,我很少遇到问题。然而,这是罕见的


就个人而言,我不喜欢一次更新很多库。这会使识别和修复问题变得困难。因此,我倾向于在项目上运行lein-again,然后决定是否要更新全部、部分或全部,然后手动进行更改。通常情况下,只需获取报告,然后对源站点进行快速检查,查看可能发生的更改,以确保它不会破坏我的代码,或者在出现问题时帮助减少搜索空间。没有什么比升级一大堆库,然后花几个小时跟踪编译/运行问题更糟糕的了——这会降低你的热情

好的,根据评论中的澄清,我建议查看一些clojure Linter。虽然大多数人关注项目代码树,但也有人会检查project.clj文件。我想不出一个工具,但是有很多单独的工具可以帮助你完成你的工作。您可以使用lein任务和别名来自动化某些过程,如果您使用emacs,则有一些附加组件将有所帮助

  • :此版本有一个里程碑,用于添加功能,该功能将检查project.clj中的:dependencies部分,并确定未使用的依赖项。虽然尚未实现,但值得关注,我认为它是一个有用的插件(由lein btw的作者编写)

  • :此插件将检查您的命名空间声明并清理它们,以便它们只包含所需的内容。任何能够重新编写project.clj文件的工具的先决条件

  • 并且:这两个将寻找可能的清理和代码改进,以帮助保持代码的一致性和更加自动化

这些类型的工具中有许多是有用的,但它们的有效性可能会受到clojure代码库的“质量”的限制。我发现,如果您的代码尽可能保持一致性和惯用性,那么使用这些工具可以获得更好的结果。运行自行车->基比特->slamhound->伊斯特伍德似乎为我提供了很好的功能


如果您使用emacs,您可能也会发现它很有用。还要注意的是,lein确实有一个搜索功能——如果需要更新索引,搜索速度可能会很慢,但之后会很快。然而,它并不是一个通用的搜索工具,但是如果您只是想找到库的名称和版本,以便将它们添加到依赖项中,那么它会非常有用——在我寻找一个库来解决问题的情况下(与我只需要获得名称和版本号的特定已知库不同)我倾向于使用谷歌和一些收集可用库信息的网站。

谢谢,很好。我的措辞有点含糊不清,我写的更新是指“重写project.clj文件”.不过你的答案还是很有趣!谢谢为什么它不是为
lein
构建的?对我来说,它似乎是一个基本功能。
$ lein plz add core.async cljs data.json
$ lein ancient upgrade-profiles [<options>]