เพื่อลดความซับซ้อนของกระบวนการย้ายข้อมูลจาก WORKSPACE
ไปยัง Bzlmod ซึ่งมักจะมีความซับซ้อน เราขอแนะนำให้ใช้สคริปต์การย้ายข้อมูล เครื่องมือช่วยนี้จะทำให้ขั้นตอนต่างๆ ที่เกี่ยวข้องกับการย้ายข้อมูลระบบการจัดการการอ้างอิงภายนอกเป็นแบบอัตโนมัติ
หมายเหตุ: หากต้องการลองใช้การย้ายข้อมูล Bzlmod ที่ขับเคลื่อนด้วย AI โปรดดูการตั้งค่าตัวแทนการย้ายข้อมูล Bzlmod
ฟังก์ชันหลัก
ฟังก์ชันหลักของสคริปต์มีดังนี้
- การรวบรวมข้อมูลการขึ้นต่อกัน: การวิเคราะห์ไฟล์
WORKSPACE
ของโปรเจ็กต์เพื่อระบุที่เก็บข้อมูลภายนอกที่ใช้โดยเป้าหมายการสร้างที่ระบุ โดยใช้แฟล็ก experimental_repository_resolved_file ของ Bazel เพื่อสร้างไฟล์การอ้างอิงที่แก้ไขแล้วซึ่งมีข้อมูลนี้ - การระบุการอ้างอิงโดยตรง: ใช้
bazel query
เพื่อพิจารณาว่าที่เก็บใดเป็นการอ้างอิงโดยตรงสำหรับเป้าหมายที่ระบุ - การย้ายข้อมูลไปยัง Bzlmod: แปลทรัพยากร Dependency
WORKSPACE
ที่เกี่ยวข้องเป็น รายการที่เทียบเท่าใน Bzlmod โดยมี 2 ขั้นตอนดังนี้- แนะนำทรัพยากร Dependency โดยตรงทั้งหมดที่ระบุในไฟล์
MODULE.bazel
- สร้างเป้าหมายที่ระบุโดยเปิดใช้ Bzlmod จากนั้น ระบุและแก้ไขข้อผิดพลาดที่รู้จักได้ทีละรายการ ขั้นตอนนี้จำเป็นเนื่องจากอาจไม่มีการระบุการอ้างอิงบางอย่างในขั้นตอนแรก
- แนะนำทรัพยากร Dependency โดยตรงทั้งหมดที่ระบุในไฟล์
- การสร้างรายงานการย้ายข้อมูล: การสร้างไฟล์
migration_info.md
ที่ บันทึกกระบวนการย้ายข้อมูล รายงานนี้ประกอบด้วยรายการการอ้างอิงโดยตรง ประกาศ Bzlmod ที่สร้างขึ้น และขั้นตอนด้วยตนเองที่อาจต้องใช้เพื่อทำการย้ายข้อมูลให้เสร็จสมบูรณ์
เครื่องมือการย้ายข้อมูลรองรับรายการต่อไปนี้
- การขึ้นต่อกันที่พร้อมใช้งานใน Bazel Central Registry
- กฎที่กำหนดเองของที่เก็บที่ผู้ใช้กำหนด
- ทรัพยากร Dependency ของเครื่องมือจัดการแพ็กเกจ
- Maven
- Go
- Python
หมายเหตุสำคัญ
- เครื่องมือการย้ายข้อมูลเป็นยูทิลิตีที่ทำงานได้ดีที่สุด โปรดตรวจสอบคำแนะนำของเครื่องมืออีกครั้งเสมอเพื่อให้แน่ใจว่าถูกต้อง
- ใช้เครื่องมือย้ายข้อมูลกับ Bazel 7 (ไม่รองรับ Bazel 8)
วิธีใช้เครื่องมือย้ายข้อมูล
ก่อนเริ่มใช้งาน
- อัปเกรดเป็น Bazel 7 รุ่นล่าสุด ซึ่งรองรับทั้ง WORKSPACE และ Bzlmod ได้อย่างมีประสิทธิภาพ
ตรวจสอบว่าคำสั่งต่อไปนี้ทำงานสำเร็จสำหรับเป้าหมายการสร้างหลักของโปรเจ็กต์
bazel build --nobuild --enable_workspace --noenable_bzlmod <targets>
คำสั่งสำหรับเรียกใช้สคริปต์
เมื่อตรงตามข้อกำหนดเบื้องต้นแล้ว ให้เรียกใช้คำสั่งต่อไปนี้เพื่อใช้เครื่องมือย้ายข้อมูล
# Clone the Bazel Central Registry repository git clone https://github.com/bazelbuild/bazel-central-registry.git cd bazel-central-registry # Build the migration tool bazel build //tools:migrate_to_bzlmod # Create a convenient alias for the tool alias migrate2bzlmod=$(realpath ./bazel-bin/tools/migrate_to_bzlmod) # Navigate to your project's root directory and run the tool cdmigrate2bzlmod -t
ไฟล์ที่สคริปต์นี้สร้างขึ้น
MODULE.bazel
- ไฟล์ Manifest กลางสำหรับ Bzlmod ซึ่งประกาศข้อมูลเมตาของโปรเจ็กต์และการอ้างอิงโดยตรงกับโมดูล Bazel อื่นๆmigration_info.md
- ไฟล์ที่ให้วิธีการแบบทีละขั้นตอนเกี่ยวกับวิธีเรียกใช้เครื่องมือย้ายข้อมูล ซึ่งออกแบบมาเพื่อช่วยในการดำเนินการกระบวนการย้ายข้อมูลให้เสร็จสมบูรณ์ด้วยตนเอง หากจำเป็นresolved_deps.py
- มีรายการที่ครอบคลุมของทรัพยากรภายนอกของโปรเจ็กต์ ซึ่งสร้างขึ้นโดยการวิเคราะห์ไฟล์WORKSPACE
ของโปรเจ็กต์ เพื่อใช้เป็นข้อมูลอ้างอิงในระหว่างการเปลี่ยนquery_direct_deps
- มีข้อมูลที่เกี่ยวข้องกับการย้ายข้อมูลเกี่ยวกับเป้าหมายที่ใช้ ซึ่งได้จากการเรียกใช้ Bazel ด้วย--output=build
ในไฟล์WORKSPACE
ของโปรเจ็กต์ โดยสคริปต์การย้ายข้อมูลจะใช้ไฟล์นี้เป็นหลักextension_for_XXX
- ไฟล์ที่มีคำจำกัดความส่วนขยายโมดูล เครื่องมือย้ายข้อมูลจะสร้างไฟล์เหล่านี้สำหรับทรัพยากร Dependency ที่ไม่ใช่โมดูล Bazel มาตรฐาน แต่จัดการได้โดยใช้ส่วนขยายโมดูลของ Bzlmod
ธง
โดยมี Flag ที่ใช้ได้ในสคริปต์การย้ายข้อมูลนี้ดังนี้
--t
/--target
: เป้าหมายที่จะย้ายข้อมูล โดยระบุแฟล็กนี้ซ้ำได้ และระบบจะสะสม เป้าหมาย--i
/--initial
: ลบMODULE.bazel
,resolved_deps.py
,migration_info.md
ไฟล์และเริ่มต้นใหม่ - ตรวจหา การอ้างอิงโดยตรง แนะนำใน MODULE.bazel และเรียกใช้การสร้าง การอ้างอิงที่แก้ไขแล้วอีกครั้ง
การล้างข้อมูลหลังการย้ายข้อมูล
- ลบ
migration_info.md
,resolved_deps.py
และquery_direct_deps
- ล้างความคิดเห็นจากไฟล์
MODULE.bazel
ที่ใช้สำหรับการย้ายข้อมูล เช่น# -- bazel_dep definitions -- #
ตัวอย่างการย้ายข้อมูล
หากต้องการดูสคริปต์การย้ายข้อมูลในการดำเนินการ ให้พิจารณาสถานการณ์ต่อไปนี้เมื่อมีการประกาศการอ้างอิง Python, Maven และ Go ในไฟล์ WORKSPACE
คลิกที่นี่เพื่อดูไฟล์ WORKSPACE
workspace(name="example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load(":my_custom_macro.bzl", "my_custom_macro")
http_archive(
name = "rules_cc",
sha256 = "b8b918a85f9144c01f6cfe0f45e4f2838c7413961a8ff23bc0c6cdf8bb07a3b6",
strip_prefix = "rules_cc-0.1.5",
urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.1.5/rules_cc-0.1.5.tar.gz"],
)
# Module dependency
# -------------------
http_archive(
name = "rules_shell",
sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043",
strip_prefix = "rules_shell-0.4.0",
url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.0/rules_shell-v0.4.0.tar.gz",
)
# Repo rule
# -------------------
http_archive(
name = "com_github_cockroachdb_cockroach",
sha256 = "6c3568ef244ce6b874694eeeecb83ed4f5d5dff6cf037c952ecde76828a6c502",
strip_prefix = "cockroach-22.1.6",
url = "https://github.com/cockroachdb/cockroach/archive/v22.1.6.tar.gz",
)
# Module extension
# -------------------
# Macro which invokes repository_rule
my_custom_macro(
name = "my_custom_repo",
)
# Go dependencies
# -------------------
http_archive(
name = "io_bazel_rules_go",
integrity = "sha256-M6zErg9wUC20uJPJ/B3Xqb+ZjCPn/yxFF3QdQEmpdvg=",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
],
)
http_archive(
name = "bazel_gazelle",
integrity = "sha256-12v3pg/YsFBEQJDfooN6Tq+YKeEWVhjuNdzspcvfWNU=",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
go_rules_dependencies()
go_register_toolchains(version = "1.23.1")
gazelle_dependencies()
go_repository(
name = "org_golang_x_net",
importpath = "golang.org/x/net",
sum = "h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=",
version = "v0.0.0-20190311183353-d8887717615a",
build_file_proto_mode = "disable",
build_naming_convention = "import",
)
# Python dependencies
# -------------------
http_archive(
name = "rules_python",
integrity = "sha256-qDdnnxOC8mlowe5vg5x9r5B5qlMSgGmh8oFd7KpjcwQ=",
strip_prefix = "rules_python-1.4.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/1.4.0/rules_python-1.4.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "my_python_deps",
requirements_lock = "@example//:requirements_lock.txt",
)
load("@my_python_deps//:requirements.bzl", "install_deps")
install_deps()
load("@rules_python//python:repositories.bzl", "python_register_toolchains")
python_register_toolchains(
name = "python_3_11",
python_version = "3.11",
)
# Maven dependencies
# __________________
RULES_JVM_EXTERNAL_TAG = "4.5"
RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
http_archive(
name = "rules_jvm_external",
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
sha256 = RULES_JVM_EXTERNAL_SHA,
url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
rules_jvm_external_deps()
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
name = "px_deps",
artifacts = [
"org.antlr:antlr4:4.11.1",
],
repositories = [
"https://repo1.maven.org/maven2",
],
)
นอกจากนี้ เพื่อแสดงให้เห็นการใช้งานส่วนขยายโมดูล ระบบจะเรียกใช้มาโครที่กำหนดเองจาก
WORKSPACE
และกำหนดไว้ใน my_custom_macro.bzl
คลิกที่นี่เพื่อดูไฟล์ my_custom_macro.bzl
"""Repo rule and macro used for testing"""
def _test_repo_rule_impl(repository_ctx):
repository_ctx.file(
"BUILD",
content = """
genrule(
name = "foo",
outs = ["rule_name.out"],
cmd = "touch $@",
visibility = ["//visibility:public"],
)
"""
)
_test_repo_rule = repository_rule(
implementation = _test_repo_rule_impl,
)
def my_custom_macro(name):
_test_repo_rule(name = name)
เป้าหมายสุดท้ายคือการMODULE.bazel
ไฟล์และลบไฟล์ WORKSPACE
โดยไม่ส่งผลกระทบต่อประสบการณ์ของผู้ใช้
ขั้นตอนแรกคือทำตามวิธีใช้เครื่องมือการย้ายข้อมูล ซึ่งส่วนใหญ่คือการตรวจสอบเวอร์ชัน Bazel (ต้องเป็น Bazel 7) และเพิ่มชื่อแทนลงในสคริปต์การย้ายข้อมูล
จากนั้นการเรียกใช้ migrate2bzlmod -t=//...
จะแสดงผลดังนี้
bazel 7.6.1 Generating ./resolved_deps.py file - It might take a while... RESOLVED:rules_java
has been introduced as a Bazel module. RESOLVED:bazel_gazelle
has been introduced as a Bazel module. RESOLVED:io_bazel_rules_go
has been introduced as a Bazel module. RESOLVED:rules_python
has been introduced as a Bazel module. IMPORTANT: 3.11 is used as a default python version. If you need a different version, please change it manually and then rerun the migration tool. RESOLVED:my_python_deps
has been introduced as python extension. RESOLVED:org_golang_x_net
has been introduced as go extension. RESOLVED:rules_jvm_external
has been introduced as a Bazel module. RESOLVED:org.antlr
has been introduced as maven extension. RESOLVED:rules_shell
has been introduced as a Bazel module. Congratulations! All external repositories needed for building //... are available with Bzlmod! IMPORTANT: Fix potential build time issues by running the following command: bazel build --enable_bzlmod --noenable_workspace //... IMPORTANT:For details about the migration process, check `migration_info.md` file.
ซึ่งให้ข้อมูลสำคัญต่อไปนี้
- สร้างไฟล์
./resolved_deps.py
ซึ่งมีข้อมูลเกี่ยวกับที่เก็บภายนอกทั้งหมดที่ประกาศและโหลดโดยใช้ไฟล์WORKSPACE
RESOLVED
คีย์เวิร์ดจะอธิบายการขึ้นต่อกันทั้งหมดที่เครื่องมือแก้ไข และเพิ่มลงในไฟล์MODULE.bazel
IMPORTANT
คีย์เวิร์ดอธิบายข้อมูลสำคัญที่คุ้มค่าต่อการลงทุนเวลา- ตัวอย่างนี้มีการแก้ไขการขึ้นต่อกันทั้งหมดแล้ว อย่างน้อยก็ด้วย
--nobuild
แฟล็ก - คุณควรเรียกใช้การสร้างแบบเต็ม (คำสั่งที่ระบุ) และแก้ไขข้อผิดพลาดที่อาจเกิดขึ้นด้วยตนเอง (เช่น ไม่ได้ลงทะเบียน Toolchain อย่างถูกต้อง)
migration_info.md
มีรายละเอียดเกี่ยวกับการย้ายข้อมูล ดูรายละเอียด ในส่วนนี้
การเปลี่ยนรูปแบบ
ส่วนนี้จะแสดงการย้ายข้อมูลโค้ดจากไฟล์ WORKSPACE
ไปยัง
MODULE.bazel
WORKSPACE - Bazel Module
http_archive( name = "rules_shell", sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043", strip_prefix = "rules_shell-0.4.0", url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.0/rules_shell-v0.4.0.tar.gz", )
MODULE.bazel - Bazel Module
bazel_dep(name = "rules_shell", version = "0.6.1")
WORKSPACE - Go Extension
http_archive( name = "io_bazel_rules_go", integrity = "sha256-M6zErg9wUC20uJPJ/B3Xqb+ZjCPn/yxFF3QdQEmpdvg=", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", ], ) http_archive( name = "bazel_gazelle", integrity = "sha256-12v3pg/YsFBEQJDfooN6Tq+YKeEWVhjuNdzspcvfWNU=", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz", "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz", ], ) load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") go_rules_dependencies() go_register_toolchains(version = "1.23.1") gazelle_dependencies() go_repository( name = "org_golang_x_net", importpath = "golang.org/x/net", sum = "h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=", version = "v0.0.0-20190311183353-d8887717615a", build_file_proto_mode = "disable", build_naming_convention = "import", )
MODULE.bazel - ส่วนขยาย Go
go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps") go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk") go_deps.from_file(go_mod = "//:go.mod") use_repo(go_deps, "org_golang_x_net") go_sdk.from_file(go_mod = "//:go.mod") go_deps.gazelle_override( path = "golang.org/x/net", directives = [ "gazelle:proto disable", "gazelle:go_naming_convention import", ], )
WORKSPACE - ส่วนขยาย Python
http_archive( name = "rules_python", integrity = "sha256-qDdnnxOC8mlowe5vg5x9r5B5qlMSgGmh8oFd7KpjcwQ=", strip_prefix = "rules_python-1.4.0", url = "https://github.com/bazelbuild/rules_python/releases/download/1.4.0/rules_python-1.4.0.tar.gz", ) load("@rules_python//python:repositories.bzl", "py_repositories") py_repositories() load("@rules_python//python:pip.bzl", "pip_parse") pip_parse( name = "my_python_deps", requirements_lock = "@example//:requirements_lock.txt", ) load("@my_python_deps//:requirements.bzl", "install_deps") install_deps() load("@rules_python//python:repositories.bzl", "python_register_toolchains") python_register_toolchains( name = "python_3_11", python_version = "3.11", )
MODULE.bazel - ส่วนขยาย Python
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") pip.parse( hub_name = "my_python_deps", python_version = "3.11", requirements_lock = "//:requirements_lock.txt", ) use_repo(pip, "my_python_deps") python = use_extension("@rules_python//python/extensions:python.bzl", "python") python.defaults(python_version = "3.11") python.toolchain(python_version = "3.11")
WORKSPACE - Maven Extension
RULES_JVM_EXTERNAL_TAG = "4.5" RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6" http_archive( name = "rules_jvm_external", strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, sha256 = RULES_JVM_EXTERNAL_SHA, url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, ) load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") rules_jvm_external_deps() load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") rules_jvm_external_setup() load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( name = "px_deps", artifacts = [ "org.antlr:antlr4:4.11.1", ], repositories = [ "https://repo1.maven.org/maven2", ], )
MODULE.bazel - Maven Extension
bazel_dep(name = "rules_jvm_external", version = "6.8") maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") use_repo(maven, "px_deps") maven.artifact( name = "px_deps", group = "org.antlr", artifact = "antlr4", version = "4.11.1" )
WORKSPACE - Repo rule
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "com_github_cockroachdb_cockroach", sha256 = "6c3568ef244ce6b874694eeeecb83ed4f5d5dff6cf037c952ecde76828a6c502", strip_prefix = "cockroach-22.1.6", url = "https://github.com/cockroachdb/cockroach/archive/v22.1.6.tar.gz", )
MODULE.bazel - กฎของที่เก็บ
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "com_github_cockroachdb_cockroach", url = "https://github.com/cockroachdb/cockroach/archive/v22.1.6.tar.gz", sha256 = "6c3568ef244ce6b874694eeeecb83ed4f5d5dff6cf037c952ecde76828a6c502", strip_prefix = "cockroach-22.1.6", )
WORKSPACE - ส่วนขยายโมดูล
load(":my_custom_macro.bzl", "my_custom_macro") my_custom_macro( name = "my_custom_repo", )
MODULE.bazel - ส่วนขยายโมดูล
extension_for_my_custom_macro = use_extension("//:extension_for_my_custom_macro.bzl", "extension_for_my_custom_macro") use_repo(extension_for_my_custom_macro, "my_custom_repo")
extension_for_my_custom_macro.bzl
load("//:my_custom_macro.bzl", "my_custom_macro") def _extension_for_my_custom_macro_impl(ctx): my_custom_macro( name = "my_custom_repo", ) extension_for_my_custom_macro = module_extension(implementation = _extension_for_my_custom_macro_impl)
เคล็ดลับในการแก้ไขข้อบกพร่อง
ส่วนนี้มีคำสั่งและข้อมูลที่เป็นประโยชน์เพื่อช่วยแก้ไขข้อบกพร่องที่ อาจเกิดขึ้นระหว่างการย้ายข้อมูล Bzlmod
เคล็ดลับที่มีประโยชน์
การลบล้างเวอร์ชัน - การอัปเกรดเวอร์ชันของ Dependency อาจทำให้เกิดปัญหาได้ Bzlmod อาจเปลี่ยนเวอร์ชันของ Dependency เนื่องจากอัลกอริทึม MVS หากต้องการใช้เวอร์ชันเดียวกันหรือเวอร์ชันที่คล้ายกันกับที่ใช้ใน WORKSPACE ให้ลบล้างด้วย single_version_override โปรดทราบว่าฟีเจอร์นี้มีประโยชน์สำหรับการแก้ไขข้อบกพร่องของความแตกต่างระหว่าง WORKSPACE กับ Bzlmod แต่คุณไม่ควรใช้ฟีเจอร์นี้ในระยะยาว
single_version_override(module_name = "{dep_name}", version = "{version}")
ใช้คำสั่ง bazel mod
ตรวจสอบเวอร์ชันของรีโปที่ระบุด้วย
show_repo
command เช่นbazel mod show_repo @rules_python
ตรวจสอบข้อมูลเกี่ยวกับส่วนขยายโมดูลด้วย
show_extension
คำสั่ง เช่นbazel mod show_extension @rules_python//python/extensions:pip.bzl%pip
ใช้โหมดผู้ให้บริการเพื่อสร้างสำเนารีโมตของรีโปเมื่อ คุณต้องการตรวจสอบหรือควบคุมแหล่งที่มาของรีโป เช่น
bazel vendor --enable_bzlmod --vendor_dir=vendor_src --repo=@protobuf
การสร้างรายงานการย้ายข้อมูล
ระบบจะอัปเดตไฟล์นี้ทุกครั้งที่เรียกใช้สคริปต์การย้ายข้อมูล หรือสร้างขึ้นใหม่ตั้งแต่ต้นหากเป็นการเรียกใช้ครั้งแรกหรือใช้แฟล็ก --i
รายงานประกอบด้วยข้อมูลต่อไปนี้
- คำสั่งสำหรับการทดสอบในเครื่อง
- รายการการอ้างอิงโดยตรง (อย่างน้อยรายการที่ใช้โดยตรงใน โปรเจ็กต์)
สำหรับการขึ้นต่อกันแต่ละรายการ จะมีเมนูแบบเลื่อนลงสำหรับตรวจสอบว่าประกาศที่เก็บไว้ที่ใดในไฟล์
WORKSPACE
ซึ่งมีประโยชน์อย่างยิ่งสำหรับการ แก้ไขข้อบกพร่อง โดยคุณจะเห็นข้อมูลต่อไปนี้> Click here to see where and how the repo was declared in the WORKSPACE file
การติดตั้งใช้งานการขึ้นต่อกันแต่ละรายการในไฟล์
MODULE.bazel
จากตัวอย่างการย้ายข้อมูลก่อนหน้านี้ จะมีลักษณะดังนี้การขึ้นต่อกันของโมดูล Bazel -
Migration of rules_python
Found perfect name match in BCR: rules_python Found partially name matches in BCR: rules_python_gazelle_plugin It has been introduced as a Bazel module: `bazel_dep(name = "rules_python", version = "1.6.1")`
- สคริปต์จะใช้
perfect name match
โดยอัตโนมัติหากพบ หากเกิดข้อผิดพลาด คุณสามารถตรวจสอบอีกครั้งว่าได้เพิ่มชื่ออย่างถูกต้องหรือไม่
- สคริปต์จะใช้
ส่วนขยาย Python -
Migration of my_python_deps
pip.parse( hub_name = "my_python_deps", requirements_lock = "//:requirements_lock.txt", python_version = "3.11", ) use_repo(pip, "my_python_deps")
ส่วนขยาย Maven -
Migration of org.antlr (px_deps):
maven.artifact( name = "px_deps", group = "org.antlr", artifact = "antlr4", version = "4.11.1" )
ส่วนขยาย Go -
Migration of org_golang_x_net
go_deps.from_file(go_mod = "//:go.mod") go_sdk.from_file(go_mod = "//:go.mod") go_deps.gazelle_override( path = "golang.org/x/net", directives = [ "gazelle:proto disable", "gazelle:go_naming_convention import", ], )
- โดยเปิดตัวเป็นโมดูล Go ด้วยความช่วยเหลือจาก
go.mod
หากgo.mod
และgo.sum
ไม่พร้อมใช้งาน ระบบจะเพิ่มโมดูล Go โดยตรง ลงในไฟล์MODULE.bazel
gazelle_override
ใช้เพื่อเพิ่มคำสั่งที่เฉพาะเจาะจง
- โดยเปิดตัวเป็นโมดูล Go ด้วยความช่วยเหลือจาก
ลิงก์ที่มีประโยชน์
- หน้าอย่างเป็นทางการของส่วนขยายภายนอก
- โพสต์และวิดีโอชุมชน
ความคิดเห็น
หากต้องการมีส่วนร่วม โปรดสร้างปัญหาหรือ PR ที่ bazel-central-registry