mod
komutu, kullanıcının harici bağımlılık grafiğini anlamasına yardımcı olacak çeşitli araçlar sunar. Bu araç, bağımlılık grafiğini görselleştirmenize, belirli bir modülün veya modül sürümünün grafikte neden bulunduğunu öğrenmenize, modülleri destekleyen depo tanımlarını görüntülemenize, modül uzantılarının ve oluşturdukları depoların kullanımlarını incelemenize olanak tanır.
Söz dizimi
bazel mod <subcommand> [<options>] [<arg> [<arg>...]]
Kullanılabilir alt komutlar ve ilgili zorunlu bağımsız değişkenler şunlardır:
graph
: Kök modülden başlayarak projenin tam bağımlılık grafiğini gösterir.--from
içinde bir veya daha fazla modül belirtilirse bu modüller doğrudan kökün altında gösterilir ve grafik yalnızca bu modüllerden başlayarak genişletilir (örneğe bakın).deps <arg>...
:graph
'ye benzer şekilde, belirtilen modüllerin her birinin çözümlenmiş doğrudan bağımlılıklarını gösterir.all_paths <arg>...
: Kökten belirtilen<arg>...
'ye kadar olan tüm mevcut yolları gösterir.--from
içinde bir veya daha fazla modül belirtilmişse, bu modüller doğrudan kökün altında gösterilir ve grafikte--from
modüllerinden argüman modüllerine giden mevcut tüm yollar bulunur (bkz. örnek).path <arg>...
:all_paths
ile aynı anlamsal yapıya sahiptir ancak yalnızca--from
modüllerinden birinden bağımsız değişken modüllerinden birine giden tek bir yolu gösterir.explain <arg>...
: Belirtilen modüllerin bağımlılık grafiğinde göründüğü tüm yerleri ve doğrudan bu modüllere bağlı olan modülleri gösterir.explain
komutunun çıktısı, esasenall_paths
komutunun budanmış bir sürümüdür ve 1) kök modülü, 2) kök modülün bağımsız değişken modüllerine yol açan doğrudan bağımlılıklarını, 3) bağımsız değişken modüllerinin doğrudan bağımlılarını ve 4) bağımsız değişken modüllerinin kendilerini içerir (örneğe bakın).show_repo <arg>...
: Belirtilen depoların tanımını gösterir (örneğe bakın).show_extension <extension>...
: Belirtilen uzantıların her biri hakkında bilgi gösterir:use_repo
kullanılarak içe aktarılan modüllerle birlikte oluşturulan depoların listesi ve kullanıldığı her modüldeki uzantı kullanımlarının listesi. Bu listede, belirtilen etiketler veuse_repo
çağrıları yer alır (örneğe bakın).
<arg>
bir veya daha fazla modülü ya da depoyu ifade eder. Şunlardan biri olabilir:
Tam dize
<root>
: Mevcut projenizi temsil eden kök modül.<name>@<version>
:<version>
sürümündeki<name>
modülü. Kayıt dışı geçersiz kılma içeren bir modül için<version>
olarak alt çizgi (_
) kullanın.<name>
: Modülün mevcut tüm sürümleri<name>
.@<repo_name>
:--base_module
bağlamında belirtilen görünen ada sahip depo.@@<repo_name>
: Belirtilen standart ad ile depo.
Modüllerin belirtilmesini gerektiren bir bağlamda, modüllere karşılık gelen (uzantı tarafından oluşturulan depoların aksine) depolara atıfta bulunan <arg>
s de kullanılabilir. Buna karşılık, depoların belirtilmesini gerektiren bir bağlamda, modüllere atıfta bulunan <arg>
'ler ilgili depoların yerine kullanılabilir.
<extension>
, <arg><label_to_bzl_file>%<extension_name>
biçiminde olmalıdır.
<label_to_bzl_file>
bölümü, depoyla ilgili bir etiket olmalıdır (örneğin,
//pkg/path:file.bzl
).
Aşağıdaki seçenekler yalnızca grafikleri yazdıran alt komutları (graph
,
deps
, all_paths
, path
ve explain
) etkiler:
--from <arg>[,<arg>[,...]]
varsayılan:<root>
: Grafiğingraph
,all_paths
,path
veexplain
içinde genişletildiği modüller. Daha fazla bilgi için alt komutların açıklamalarını inceleyin.--verbose
default: "false": Çıkış grafiğine her modülün sürüm çözümüyle ilgili ek bilgiler ekleyin. Çözüm sırasında modül sürümü değiştiyse hangi sürümün yerine geçtiğini veya orijinal sürümün ne olduğunu, değiştirilme nedenini ve neden Minimal Sürüm Seçimi ise yeni sürümü hangi modüllerin istediğini gösterin.--include_unused
default: "false": Çıkış grafiğine, başlangıçta bağımlılık grafiğinde bulunan ancak modül çözümlendirmesinden sonra kullanılmayan modülleri dahil edin.--extension_info <mode>
: Çıkış grafiğine modül uzantısı kullanımlarıyla ilgili bilgileri ekleyin (örneğe bakın).<mode>
aşağıdakilerden biri olabilir:hidden
(varsayılan): Uzantılarla ilgili hiçbir şey göstermeyin.usages
: Uzantıları, kullanıldıkları her modülün altında gösterin. Bunlar$<extension>
biçiminde yazdırılır.repos
:usages
'ye ek olarak, her uzantı kullanımının altındause_repo
kullanılarak içe aktarılan depoyu gösterin.all
:usages
verepos
'ye ek olarak, hiçbir modül tarafından içe aktarılmayan uzantı tarafından oluşturulan depoları da gösterin. Bu ek depolar, çıktıda oluşturma uzantılarının ilk oluşumunun altında gösterilir ve noktalı bir kenarla bağlanır.
--extension_filter <extension>[,<extension>[,...]]
: Belirtilirse çıkış grafiği yalnızca belirtilen uzantıları kullanan modülleri ve bu modüllere giden yolları içerir. Boş bir uzantı listesi belirtmek (--extension_filter=
örneğinde olduğu gibi), bağımlılık grafiğindeki herhangi bir modül tarafından kullanılan tüm uzantıları belirtmekle eşdeğerdir.--depth <N>
: Çıkış grafiğinin derinliği. Derinlik 1 olduğunda yalnızca kök ve doğrudan bağımlılıkları gösterilir. Varsayılan olarakexplain
için 1,deps
için 2 ve diğerleri için sonsuz değerine ayarlanır.--cycles
default: "false": Çıkış grafiğine döngü kenarlarını dahil edin.--include_builtin
varsayılan: "false": Çıkış grafiğine yerleşik modülleri (ör.@bazel_tools
) dahil edin. Yerleşik modüller, diğer tüm modüller tarafından örtülü olarak kullanıldığından bu işaret varsayılan olarak devre dışıdır. Bu durum, çıktıyı büyük ölçüde karıştırır.--charset <charset>
default: utf8: Metin çıkışı için kullanılacak karakter kümesini belirtin. Geçerli değerler"utf8"
ve"ascii"
'dir. Tek önemli fark,"text"
çıkış biçiminde grafiği çizmek için kullanılan ve"ascii"
karakter setinde bulunmayan özel karakterlerdir. Bu nedenle, Unicode'u kullanamayan eski platformlarda da kullanılabilmesi için"ascii"
karakter seti mevcuttur.--output <mode>
: Çıkış grafiğinin bir parçası olarak modül uzantısı kullanımlarıyla ilgili bilgileri ekleyin.<mode
> aşağıdakilerden biri olabilir:text
(varsayılan): Çıkış grafiğinin okunabilir bir gösterimi (ağaç olarak düzleştirilmiş).json
: Grafiği JSON nesnesi biçiminde (ağaç olarak düzleştirilmiş) çıkarır.graph
: Grafiği Graphviz dot gösteriminde çıkarır.
bazel mod graph --output graph | dot -Tsvg > /tmp/graph.svg
Diğer seçenekler şunlardır:
--base_module <arg>
default:<root>
: Bağımsız değişkenlerdeki görünen depo adlarının yorumlanacağı modülü belirtin. Bu bağımsız değişkenin kendisinin@<repo_name>
biçiminde olabileceğini unutmayın. Bu her zaman kök modüle göre yorumlanır.--extension_usages <arg>[,<arg>[,...]]
:show_extension
, yalnızca belirtilen modüllerden gelen uzantı kullanımlarını gösterecek şekilde filtrelenir.
Örnekler
Projenizin harici bağımlılıklarını incelemek için kullanabileceğiniz mod
komutunun gerçek bir Bazel projesindeki olası kullanımları aşağıda gösterilmiştir.
MODULE.bazel
dosyası:
module(
name = "my_project",
version = "1.0",
)
bazel_dep(name = "bazel_skylib", version = "1.1.1", repo_name = "skylib1")
bazel_dep(name = "bazel_skylib", version = "1.2.0", repo_name = "skylib2")
multiple_version_override(module_name = "bazel_skylib", versions = ["1.1.1", "1.2.0"])
bazel_dep(name = "stardoc", version = "0.5.0")
bazel_dep(name = "rules_java", version = "5.0.0")
toolchains = use_extension("@rules_java//java:extensions.bzl", "toolchains")
use_repo(toolchains, my_jdk="remotejdk17_linux")
|
|
Projenizin bağımlılık grafiğinin tamamını görüntüleyin.
bazel mod graph
<root> (my_project@1.0) ├───bazel_skylib@1.1.1 │ └───platforms@0.0.4 ├───bazel_skylib@1.2.0 │ └───platforms@0.0.4 ... ├───rules_java@5.0.0 │ ├───platforms@0.0.4 ... │ ├───rules_cc@0.0.1 │ │ ├───bazel_skylib@1.1.1 ... │ │ └───platforms@0.0.4 ... │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.1.1 ... │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 ├───bazel_skylib@1.1.1 ... └───rules_java@5.0.0 ...
Tüm bağımlılık grafiğini (kullanılmayan modüller dahil ve sürüm çözümüyle ilgili ek bilgilerle birlikte) görüntüleyin.
bazel mod graph --include_unused --verbose
<root> (my_project@1.0) ├───bazel_skylib@1.1.1 │ └───platforms@0.0.4 ├───bazel_skylib@1.2.0 │ └───platforms@0.0.4 ... ├───rules_java@5.0.0 │ ├───platforms@0.0.4 ... │ ├───rules_cc@0.0.1 │ │ ├───bazel_skylib@1.0.3 ... (to 1.1.1, cause multiple_version_override) │ │ ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ │ └───platforms@0.0.4 ... │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.0.3 ... (to 1.1.1, cause multiple_version_override) │ ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) ├───rules_java@5.0.0 ... (was 4.0.0, cause <root>, bazel_tools@_) ├───bazel_skylib@1.0.3 (to 1.1.1, cause multiple_version_override) │ └───platforms@0.0.4 ... └───rules_java@4.0.0 (to 5.0.0, cause <root>, bazel_tools@_) ├───bazel_skylib@1.0.3 ... (to 1.1.1, cause multiple_version_override) └───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override)
Belirli modüllerden genişletilmiş bağımlılık grafiğini gösterir.
bazel mod graph --from rules_java --include_unused
<root> (my_project@1.0) ├───rules_java@5.0.0 │ ├───platforms@0.0.4 │ ├───rules_cc@0.0.1 │ │ ├───bazel_skylib@1.0.3 ... (unused) │ │ ├───bazel_skylib@1.1.1 ... │ │ └───platforms@0.0.4 ... │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.0.3 ... (unused) │ ├───bazel_skylib@1.1.1 ... │ └───rules_cc@0.0.1 ... └╌╌rules_java@4.0.0 (unused) ├───bazel_skylib@1.0.3 (unused) │ └───platforms@0.0.4 ... └───bazel_skylib@1.1.1 └───platforms@0.0.4 ...
İki modülünüz arasındaki tüm yolları gösterir.
bazel mod all_paths bazel_skylib@1.1.1 --from rules_proto
<root> (my_project@1.0) └╌╌rules_proto@4.0.0 ├───bazel_skylib@1.1.1 └───rules_cc@0.0.1 └───bazel_skylib@1.1.1 ...
Projenizin neden ve nasıl bazı modüllere bağlı olduğunu görün.
bazel mod explain @skylib1 --verbose --include_unused
<root> (my_project@1.0) ├───bazel_skylib@1.1.1 ├───rules_java@5.0.0 │ ├───rules_cc@0.0.1 │ │ └───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ └───rules_proto@4.0.0 │ ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) ├╌╌rules_cc@0.0.1 │ └───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) └╌╌rules_proto@4.0.0 ├───bazel_skylib@1.1.1 ... (was 1.0.3, cause multiple_version_override) └───rules_cc@0.0.1 ...
Bazı modüllerinizin temel kuralını görün.
bazel mod show_repo rules_cc stardoc
## rules_cc@0.0.1: # <builtin> http_archive( name = "rules_cc+", urls = ["https://bcr.bazel.build/test-mirror/github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz", "https://github.com/bazelbuild/rules_cc/releases/download/0.0.1/rules_cc-0.0.1.tar.gz"], integrity = "sha256-Tcy/0iwN7xZMj0dFi9UODHFI89kgAs20WcKpamhJgkE=", strip_prefix = "", remote_patches = {"https://bcr.bazel.build/modules/rules_cc/0.0.1/patches/add_module_extension.patch": "sha256-g3+zmGs0YT2HKOVevZpN0Jet89Ylw90Cp9XsIAY8QqU="}, remote_patch_strip = 1, ) # Rule http_archive defined at (most recent call last): # /home/user/.cache/bazel/_bazel_user/6e893e0f5a92cc4cf5909a6e4b2770f9/external/bazel_tools/tools/build_defs/repo/http.bzl:355:31 in <toplevel> ## stardoc: # <builtin> http_archive( name = "stardoc+", urls = ["https://bcr.bazel.build/test-mirror/github.com/bazelbuild/stardoc/releases/download/0.5.0/stardoc-0.5.0.tar.gz", "https://github.com/bazelbuild/stardoc/releases/download/0.5.0/stardoc-0.5.0.tar.gz"], integrity = "sha256-yXlNzIAmow/2fPfPkeviRcopSyCwcYRdEsGSr+JDrXI=", strip_prefix = "", remote_patches = {}, remote_patch_strip = 0, ) # Rule http_archive defined at (most recent call last): # /home/user/.cache/bazel/_bazel_user/6e893e0f5a92cc4cf5909a6e4b2770f9/external/bazel_tools/tools/build_defs/repo/http.bzl:355:31 in <toplevel>
Bağımlılık grafiğinizde hangi modül uzantılarının kullanıldığını görün.
bazel mod graph --extension_info=usages --extension_filter=all
<root> (my_project@1.0) ├───$@@rules_java.5.0.0//java:extensions.bzl%toolchains ├───rules_java@5.0.0 # │ ├───$@@rules_java.5.0.0//java:extensions.bzl%toolchains │ ├───rules_cc@0.0.1 # │ │ └───$@@rules_cc.0.0.1//bzlmod:extensions.bzl%cc_configure │ └───rules_proto@4.0.0 │ └───rules_cc@0.0.1 ... └───stardoc@0.5.0 └───rules_java@5.0.0 ...
Bağımlılık grafiğinin bir parçası olarak belirli bir uzantıdan hangi depoların oluşturulduğunu ve içe aktarıldığını görün.
bazel mod show_extension @@rules_java+5.0.0//java:extensions.bzl%toolchains
<root> (my_project@1.0) ├───$@@rules_java.5.0.0//java:extensions.bzl%toolchains │ ├───remotejdk17_linux │ ├╌╌remotejdk11_linux │ ├╌╌remotejdk11_linux_aarch64 │ ├╌╌remotejdk11_linux_ppc64le │ ├╌╌remotejdk11_linux_s390x ...(some lines omitted)... ├───rules_java@5.0.0 # │ └───$@@rules_java.5.0.0//java:extensions.bzl%toolchains ... │ ├───local_jdk │ ├───remote_java_tools │ ├───remote_java_tools_darwin │ ├───remote_java_tools_linux │ ├───remote_java_tools_windows │ ├───remotejdk11_linux_aarch64_toolchain_config_repo │ ├───remotejdk11_linux_ppc64le_toolchain_config_repo ...(some lines omitted)... └───stardoc@0.5.0 └───rules_java@5.0.0 ...
Bir uzantının oluşturulan depolarının listesini ve bu uzantının her modülde nasıl kullanıldığını görün.
bazel mod graph --extension_info=all --extension_filter=@rules_java//java:extensions.bzl%toolchains
## @@rules_java.5.0.0//java:extensions.bzl%toolchains: Fetched repositories: - local_jdk (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools_darwin (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools_linux (imported by bazel_tools@_, rules_java@5.0.0) - remote_java_tools_windows (imported by bazel_tools@_, rules_java@5.0.0) - remotejdk11_linux_aarch64_toolchain_config_repo (imported by rules_java@5.0.0) - remotejdk11_linux_ppc64le_toolchain_config_repo (imported by rules_java@5.0.0) ...(some lines omitted)... - remotejdk17_linux (imported by <root>) - remotejdk11_linux - remotejdk11_linux_aarch64 - remotejdk11_linux_ppc64le - remotejdk11_linux_s390x - remotejdk11_macos ...(some lines omitted)... # Usage in <root> at <root>/MODULE.bazel:14:27 with the specified attributes: use_repo( toolchains, my_jdk="remotejdk17_linux", ) # Usage in bazel_tools@_ at bazel_tools@_/MODULE.bazel:23:32 with the specified attributes: use_repo( toolchains, "local_jdk", "remote_java_tools", "remote_java_tools_linux", "remote_java_tools_windows", "remote_java_tools_darwin", ) # Usage in rules_java@5.0.0 at rules_java@5.0.0/MODULE.bazel:30:27 with the specified attributes: use_repo( toolchains, "remote_java_tools", "remote_java_tools_linux", "remote_java_tools_windows", "remote_java_tools_darwin", "local_jdk", "remotejdk11_linux_toolchain_config_repo", "remotejdk11_macos_toolchain_config_repo", "remotejdk11_macos_aarch64_toolchain_config_repo", ...(some lines omitted)... )
Bazı uzantı tarafından oluşturulan depoların temel kuralını görün.
bazel mod show_repo --base_module=rules_java @remote_java_tools
## @remote_java_tools: # <builtin> http_archive( name = "rules_java++toolchains+remote_java_tools", urls = ["https://mirror.bazel.build/bazel_java_tools/releases/java/v11.5/java_tools-v11.5.zip", "https://github.com/bazelbuild/java_tools/releases/download/java_v11.5/java_tools-v11.5.zip"], sha256 = "b763ee80e5754e593fd6d5be6d7343f905bc8b73d661d36d842b024ca11b6793", ) # Rule http_archive defined at (most recent call last): # /home/user/.cache/bazel/_bazel_user/6e893e0f5a92cc4cf5909a6e4b2770f9/external/bazel_tools/tools/build_defs/repo/http.bzl:355:31 in <toplevel>