mod komutu

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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ında graph 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 dizinin altında gösterilir. 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çeren all_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ın use_repo kullanılarak içe aktarıldığı bir liste ve her bir modüle eklenen bir eklenti içerir. Bu uzantı, etiketleri ve use_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? grafik graph, all_paths, path ve explain 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ında use_repo.

    • all: usages ve repos'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&gt; ş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.

    ziyaret edin.
    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")
Çözünürlükten Önce Grafik
Çözümden Önce Grafik
Çözünürlükten Sonra Grafik
Çözümden Sonra Grafik
  1. 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 ...
    
  2. 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)
    
  3. ü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 ...
    
  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 ...
    
  5. 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 ...
    
  6. 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~0.0.1",
      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~0.5.0",
      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>
    
  7. 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 ...
    
  8. 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 ...
    
  9. 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)...
    )
    
  10. 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~5.0.0~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>