find-deps は、 Clojars および Maven 検索 API を介して依存関係を迅速に見つけるのに役立ちます。コマンドラインまたは REPL から使用します。
find-deps はclj-fuzzy を利用して、リポジトリ API から返された検索結果を絞り込みます。また、依存関係の新しさ、および依存関係のグループ ID の人気も考慮されます。これにより、毎回ほぼ完璧な提案が得られることを願っています。
これをどのように実現できるかに関するいくつかのアイデアについては、以下の「将来」セクションを参照してください。特に、github でdeps.edn
ファイルを検索できるようになると素晴らしいでしょう…
現在の deps.edn に依存関係を次のように簡単に追加します。
clj -A:find-deps -F:save priority-map
コマンドラインからfind-deps を使用するには、~/.clojure/deps.edn マップにエイリアスを作成します。
{ :aliases { :find-deps { :extra-deps
{find-deps
{ :git/url " https://github.com/hagmonk/find-deps " ,
:sha " 6fc73813aafdd2288260abb2160ce0d4cdbac8be " }},
:main-opts [ " -m " " find-deps.core " ]}}}
-h
指定してfind-deps を呼び出すと、サポートされているオプションを確認できます。
% clj -A:find-deps -h
find-deps
Usage: [options * ] [search-strings * ]
Options:
-s, --sources SOURCES :clojars:mvn Concatenated source types
-R, --rank METHOD :fuzzy Ranking method - :fuzzy, :regex
-F, --format FORMAT :deps Format for printing results - :deps, :merge, :table, :save, :cli
-l, --limit NUM 1 Limit per-search results to NUM
-h, --help
http-kit のような依存関係を検索します。
clj -A:find-deps http-kit
{ :deps {http-kit/http-kit { :mvn/version " 2.3.0 " }}}
複数の依存関係を検索します。
clj -A:find-deps http-kit tools.logging priority-map
{ :deps
{http-kit/http-kit { :mvn/version " 2.3.0 " },
org.clojure/tools.logging { :mvn/version " 0.5.0-alpha " },
org.clojure/data.priority-map { :mvn/version " 0.0.9 " }}}
異なるクエリ引数を使用して複数の呼び出しをチェーンします。
clj -A:find-deps -s:mvn roaringbitmap | clj -A:find-deps -s:clojars -R:regex -l 5 io.pedestal
{ :deps
{org.roaringbitmap/RoaringBitmap { :mvn/version " 0.7.13 " },
io.pedestal/pedestal.jetty { :mvn/version " 0.5.3 " },
io.pedestal/pedestal.tomcat { :mvn/version " 0.5.3 " },
io.pedestal/pedestal.log { :mvn/version " 0.5.3 " },
io.pedestal/pedestal.service { :mvn/version " 0.5.3 " },
io.pedestal/pedestal.interceptor { :mvn/version " 0.5.3 " }}}
検索結果を現在のプロジェクトのdeps.edn
にマージします。代わりに:save
指定して、これらの結果を deps.edn に保存することもできます。
clj -A:find-deps -F:merge http-kit tools.logging priority-map
{ :paths [ " src " ],
:deps
{org.clojure/clojure { :mvn/version " 1.9.0 " },
org.clojure/tools.logging { :mvn/version " 0.5.0-alpha " },
org.clojure/spec.alpha { :mvn/version " 0.1.143 " },
clj-fuzzy { :mvn/version " 0.4.1 " },
http-kit { :mvn/version " 2.3.0 " },
tools.deps.alpha
{ :git/url " https://github.com/clojure/tools.deps.alpha " ,
:sha " 884d7ae5b9c228ff795e4385291708102f1cd46d " },
metosin/jsonista { :mvn/version " 0.1.1 " },
org.clojure/data.priority-map { :mvn/version " 0.0.9 " },
inflections { :mvn/version " 0.13.0 " },
http-kit/http-kit { :mvn/version " 2.3.0 " }}
; ; ... snip
}
テーブル内の複数の一致を返す文字列検索:
clj -A:find-deps -F:table -l 10 " apache kafka "
| :lib | :version |
| -----------------------------------+---------- |
| org.apache.kafka/kafka-tools | 1.1.0 |
| org.apache.kafka/kafka_2.9.2 | 0.8.2.2 |
| org.apache.kafka/kafka_2.9.1 | 0.8.2.2 |
| org.apache.kafka/kafka_2.8.0 | 0.8.1.1 |
| org.apache.kafka/kafka_2.8.2 | 0.8.1 |
| org.apache.hadoop/hadoop-kafka | 3.1.0 |
| org.apache.kafka/kafka-streams | 1.1.0 |
| org.apache.kafka/kafka-clients | 1.1.0 |
| org.apache.kafka/kafka-examples | 1.1.0 |
| org.apache.kafka/kafka-perf_2.8.0 | 0.8.1.1 |
deps のコマンドライン呼び出しを出力します。
clj -A:find-deps -F:cli http-kit jsonista
clojure -Sdeps ' {:deps {http-kit/http-kit {:mvn/version "2.3.0"}, metosin/jsonista {:mvn/version "0.2.1"}}} '
find-deps.core
名前空間には、REPL から使用できる多数のヘルパーが含まれています。 rebel-readline のエイリアスがあると仮定します。
clj -A:rebel
[Rebel readline] Type :repl/help for online help info
user= > (use ' find-deps.core)
nil
user=> (print-deps "http-kit")
| :lib | :version |
|-------------------+----------|
| http-kit/http-kit | 2.3.0 |
nil
user=> (deps "http-kit")
{:deps #:http-kit{http-kit #:mvn{:version "2.3.0"}}}
その他のヘルパーについては、 find-deps.core
名前空間を参照してください。
add-lib
サポート