我想从命令行搜索并安装clojure依赖项。
是否存在工具/ leiningen命令/ lein change
脚本?/ ...可以:
project.clj
以包含依赖项(最新版本)对于那些熟悉npm install --save
(JS / Node包管理器)的人来说,npm(--save-dev
)和npm search
大致相同。
(也许boot提供更像npm的工作流程?)
答案 0 :(得分:6)
您可以在Plugins Wiki page找到所有Leiningen插件的完整列表。
我只浏览了Development Tools部分,找到了您可能感兴趣的两个插件:
以下是使用lein-plz
(from its Readme)添加新依赖项的示例:
$ lein plz add core.async cljs data.json
使用lein-ancient
(from its Readme)更新过期依赖项的示例:
$ lein ancient upgrade-profiles [<options>]
答案 1 :(得分:2)
我认为lein-ancient正是您所寻求的。我已经使用它已经有一段时间了,发现它非常可靠。您可以让它自己进行更新,或者只是获取报告然后手动执行。如果您只想要生产版本,或者可以使用快照等,也可以告诉它。
它并不完美,因为它严重依赖开发人员提供的有关其库的信息。当开发人员进行更改并且没有增加版本号或使用不寻常的版本编号方案时,我遇到了非常罕见的问题。然而,这种情况很少见。
就个人而言,我不喜欢一次更新大量的库。这可能使识别和修复问题变得困难。因此,我倾向于在项目上运行lein ancient,然后决定是否要更新all,some或none,然后手动进行更改。获取报告然后在源站点上进行详细检查以查看可能已更改的内容通常是好的,以确保它不会破坏我的代码或帮助减少搜索空间问题。没有什么比升级一堆lib更糟糕的了,然后花费数小时追踪编译/运行问题 - 往往会削弱你的热情!
答案 2 :(得分:1)
好的,根据评论中的澄清,我建议看看一些clojure linters。虽然大多数都专注于您的项目代码树,但有些人还会检查您的project.clj文件。我没有一个可以想到的工具,但是有许多单独的工具可以帮助您完成后续工作的一小部分。您可以使用lein任务和别名来自动执行某些过程,如果您使用emacs,还有一些有用的附加功能。
Eastwood:这个有一个里程碑来添加功能,它将检查project.clj中的:dependencies部分,并识别未使用的依赖项。虽然还没有实现,但值得关注,我认为它是一个有用的插件(由lein btw的作者编写)
slamhound:此插件将检查您的命名空间声明并清理它们,以便它们只包含所需的内容。任何可能重写您的project.clj文件的工具的先决条件IMO
这些类型的工具中的许多都很有用,但它们的有效性可能受到clojure代码库的“质量”的限制。如果您的代码尽可能一致且惯用,我发现使用此类工具可以获得更好的结果。跑bikeshed - &gt; kibit - &gt; slamhound - &gt; eastwood似乎为我提供了良好的功能。
如果您使用emacs,您可能还会发现clj-refactor.el有用。另请注意,lein确实有一个搜索工具 - 如果需要更新索引,它可能会很慢,但之后很快。但是,它不是一般的搜索功能,但如果您只是想找到库名称和版本以便可以将它们添加到您的依赖项中,它可能非常有用 - 在我正在寻找的情况下对于一个解决问题的库(当我只需要获取名称和版本号时,与特定的已知库相对)我倾向于使用谷歌和那些收集可用库信息的一些站点。