تساعدك ميزة find-deps في العثور بسرعة على التبعيات عبر واجهات برمجة تطبيقات بحث Clojars وMaven. استخدمه عبر سطر الأوامر، أو من REPL.
يستخدم find-deps clj-fuzzy لتحسين نتائج البحث التي يتم إرجاعها من واجهات برمجة تطبيقات المستودع. كما أنه يؤثر أيضًا على حداثة التبعيات وشعبية معرف مجموعة التبعيات. نأمل أن يؤدي هذا إلى اقتراح شبه مثالي في كل مرة!
راجع قسم المستقبل أدناه للحصول على بعض الأفكار حول المكان الذي يمكن تنفيذ ذلك فيه. على وجه الخصوص، سيكون من الرائع تمكين البحث عن ملفات deps.edn
على github...
أضف تبعية إلى 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 " ]}}}
يمكنك استدعاء find-deps باستخدام -h
لرؤية الخيارات المدعومة:
% 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
بالمشروع الحالي. يمكنك أيضًا حفظ هذه النتائج في deps.edn عن طريق تحديد :save
بدلاً من ذلك.
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 |
اطبع استدعاء سطر الأوامر الخاص بـ dep:
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