Bazel 6.3.0'da kullanıma sunulan mod
komutu, yardımcı olması için birçok araç sunar.
Bzlmod etkinleştirildiğinde kullanıcı dış bağımlılık grafiğini anlar. Google
bağımlılık grafiğini görselleştirmenize, belirli bir modülün veya bir testin
Grafikte bir modülün sürümü mevcutsa depo tanımlarını görüntüleyin
ve oluşturdukları veri havuzlarının kullanımlarını inceleyerek,
diğer işlevleri kullanabilirsiniz.
Söz dizimi
bazel mod <subcommand> [<options>] [<arg> [<arg>...]]
Kullanılabilir alt komutlar ve ilgili gerekli bağımsız değişkenler şunlardır:
graph
: Projenin başlangıç tarihinden itibaren tam bağımlılık grafiğini gösterir. kök modül.--from
içinde bir veya daha fazla modül belirtilmişse modüller doğrudan kökün altında gösterilir ve grafik yalnızca başlayın (örneğe bakın).deps <arg>...
: Her bir öğenin çözülmüş doğrudan bağımlılıklarını belirtilen modüller arasındagraph
benzer.all_paths <arg>...
: Kök dizinden<arg>...
belirtilmiş.--from
içinde bir veya daha fazla modül belirtilmişse bu modüller doğrudan kök dizin altında gösterilir ve grafikte--from
modüllerinden bağımsız değişken modüllerine giden mevcut herhangi bir yol (bkz. example) ekleyebilirsiniz.path <arg>...
:all_paths
ile aynı anlamlara sahiptir, ancak yalnızca aşağıdaki gibi bir anlam ifade eder:--from
modüllerinin birinden bağımsız değişken modüllerinden birine tek bir yol.explain <arg>...
: Belirtilen modüllerin göründüğü tüm yerleri gösterir bağımlılığı grafiğine bakabilirsiniz. Her bir öğede gerekir.explain
komutunun çıkışı, aslında 1) kök modülü içerenall_paths
komutu; 2) kök modülün argüman modüllerine yönlendiren doğrudan bağımlılıklar; 3) argüman modüllerin Doğrudan bağımlılar; ve 4) bağımsız değişken modüllerinin kendileri (örneğe bakın).show_repo <arg>...
: Belirtilen depoların tanımını gösterir (bkz. example) ekleyebilirsiniz.show_extension <extension>...
: Her bir öğeyle ilgili bilgileri görüntüler belirtilen uzantılar: modüllerle birlikte oluşturulan depoların listesi bunlarınuse_repo
kullanılarak içe aktarıldığı bir liste ve her bir modüle eklenen bir eklenti içerir. Bu uzantı, etiketleri veuse_repo
çağrıları (örneğe bakın).
<arg>
, bir veya daha fazla modül ya da depoyu ifade eder. Şunlardan biri olabilir:
<root>
düz dizesi: Mevcut değerlerinizi temsil eden kök modül belirler.<name>@<version>
:<version>
sürümündeki<name>
modülü. Modül için kayıt defteri dışı geçersiz kılmayla,<version>
olarak alt çizgi (_
) kullanın.<name>
:<name>
modülünün mevcut tüm sürümleri.@<repo_name>
: Belirtilen ayara sahip depo adı--base_module
bağlamında alınır.@@<repo_name>
: Belirtilen standart değere sahip depo ad'ı seçin.
Modüllerin belirtilmesini gerektiren bir bağlamda, <arg>
öğeleri yüksek kaliteli
kod depolarına (uzantılar tarafından değil) karşılık gelen
kullanılır. Buna karşılık, depoların belirtilmesini gerektiren bir bağlamda <arg>
s,
ilgili depoları temsil edebilir.
<extension>
, <arg><label_to_bzl_file>%<extension_name>
biçiminde olmalıdır.
<label_to_bzl_file>
bölümü, depoya bağlı bir etiket olmalıdır (örneğin,
//pkg/path:file.bzl
) tıklayın.
Aşağıdaki seçenekler yalnızca grafikleri (graph
,
deps
, all_paths
, path
ve explain
):
--from <arg>[,<arg>[,...]]
varsayılan:<root>
: Hangi modüller? grafikgraph
,all_paths
,path
veexplain
dillerine genişletilir. Kontrol et alt emirlerin açıklamalarına bakın.--verbose
default: "false": Çıkış grafiğine ekstra ekleyin sürüm çözünürlüğü hakkında daha fazla bilgi edinin. Modül sırasında değiştirilmiş sürüm varsa, yeni sürümün hangi sürümle değiştirildiğini gösterir veya orijinal sürümün ne olduğu, değiştirilme nedeni ve hangi modüllerin neden Minimal Sürüm" ise yeni sürümü istemiş olması Seçim.--include_unused
default: "false": Çıkış grafiğine ilk başta bağımlılık grafiğinde bulunan ancak şimdiki birçok farklı alan bulunur.--extension_info <mode>
: Modül uzantısıyla ilgili bilgileri ekleyin kullanımları (örneğe bakın).<mode>
. şunlardan biri olabilir:hidden
(varsayılan): Uzantılar hakkında hiçbir şey gösterme.usages
: Uzantıları her modülün altında kullanıldıkları şekilde gösterin. Onlar$<extension>
biçiminde basılır.repos
:usages
'a ek olarak, şu araçla içe aktarılan depoyu gösterin: Her bir uzantı kullanımının altındause_repo
.all
:usages
verepos
'ye ek olarak şunu da göster: herhangi bir modül tarafından içe aktarılmayan, uzantı tarafından oluşturulmuş depolar. Bu ekstra kod depoları, oluşturma işlemlerinin ilk oluşumu altında gösterilir uzantısına sahip olmalıdır ve noktalı bir kenarla bağlanmıştır.
--extension_filter <extension>[,<extension>[,...]]
: Belirtilmişse çıkış grafiğinde yalnızca belirtilen uzantıları kullanan modülleri içerir ve götüren yolları inceleyeceğiz. Boş bir uzantı listesi belirtmek (örneğin,--extension_filter=
), kullanılan tüm uzantıları belirtmeye eşdeğerdir herhangi bir modüle göre değişir.--depth <N>
: Çıkış grafiğinin derinliği. 1 derinliği yalnızca ve doğrudan bağımlılıkları üzerine konuşacağız.explain
için varsayılan değer 1,deps
için 2'dir sonsuza kadar sürecek.--cycles
default: "false": Döngü kenarlarını çıkış grafiğine dahil eder.--include_builtin
default: "false": Yerleşik modülleri (ör.@bazel_tools
). Bu işaret varsayılan olarak devre dışıdır. yerleşik modüller dolaylı olarak diğer tüm modüllere bağlıdır. çıktıyı büyük ölçüde karmaşıklaştırır.--charset <charset>
default: utf8: Metin için kullanılacak karakter kümesini belirtin çıktı. Geçerli değerler"utf8"
ve"ascii"
değerleridir. Proje yöneticilerinin fark, grafiği çizmek için kullanılan özel karakterlerin"ascii"
karakter kümesinde bulunmayan"text"
çıkış biçimi. Bu nedenle,"ascii"
karakter kümesi, Unicode kullanamayan eski platformlara izin verir.--output <mode>
: Modül uzantısı kullanımlarıyla ilgili bilgileri bir kısmı çıktı.<mode
> şunlardan biri olabilir:text
(varsayılan): Çıkış grafiğinin kullanıcılar tarafından okunabilen bir temsili (ağaç olarak düzleştirilmiştir).json
: Grafiği bir JSON nesnesi biçiminde verir (öğe olarak düzleştirilmiştir) ağacı).graph
: Grafiği, Graphviz noktası temsilinde verir.
bazel mod graph --output graph | dot -Tsvg > /tmp/graph.svg
Diğer seçenekler şunlardır:
--base_module <arg>
varsayılan:<root>
: Şuna göre bir modül belirtin: Bu da, bağımsız değişkenlerdeki görünür kod deposu adlarının yorumlandığı anlamına gelir. Bu bağımsız değişkenin kendisi@<repo_name>
biçiminde olabilir; her zaman bu kök modüle göre yorumlanır.--extension_usages <arg>[,<arg>[,...]]
:show_extension
filtresini yalnızca şu şekilde filtreler: belirtilen modüllerdeki uzantı kullanımlarını görüntüleme
Örnekler
Gerçek bir Bazel projesinde mod
komutunun olası bazı kullanımları gösterilmiştir
ve bu bilgileri projeniz için nasıl kullanabileceğiniz konusunda
ve dış bağımlılıkları
belirlemenize yardımcı olur.
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")
|
|
Bağımlılık grafiğinin tamamını belirler.
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 ...
Bağımlılık grafiğinin tamamını ( sürüm çözünürlüğü hakkında ek bilgi içeren yeni bir bildirim ekleyin.
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)
üzerine konuşacağız.
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 ...
Yolun iki katı arasındaki tüm yolları görüntüleyin modüllerinde yer alır.
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 bazı özelliklere bağlı olmasının modülünü kullanabilirsiniz.
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 ...
Modüllerinizden bazılarının temel kuralını inceleyin depolar.
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>
Google Ads hesabınızda hangi modül uzantılarının kullanıldığını bağımlılık grafiğidir.
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 ...
Hangi depoların oluşturulduğunu görme ve bağımlılık grafiğinin bir parçası olarak belirli bir uzantıdan içe aktarılan verileri içerir.
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 ve uzantının her bir modülde nasıl kullanıldığına bakalım.
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ı testlerin temel kuralını uzantı tarafından oluşturulan kod depolarıdır.
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>