Bzlmod 이전 도구

WORKSPACE에서 Bzlmod로 이동하는 복잡한 프로세스를 간소화하려면 마이그레이션 스크립트를 사용하는 것이 좋습니다. 이 도우미 도구는 외부 종속 항목 관리 시스템을 이전하는 데 필요한 여러 단계를 자동화합니다.

참고: AI 기반 Bzlmod 마이그레이션을 사용해 보려면 Bzlmod 마이그레이션 에이전트 설정을 확인하세요.

핵심 기능

스크립트의 기본 기능은 다음과 같습니다.

  • 종속 항목 정보 수집: Bazel의 experimental_repository_resolved_file 플래그를 사용하여 이 정보가 포함된 해결된 종속 항목 파일을 생성하여 프로젝트의 WORKSPACE 파일을 분석하여 지정된 빌드 타겟에서 사용되는 외부 저장소를 식별합니다.
  • 직접 종속 항목 식별: bazel query를 사용하여 지정된 타겟의 직접 종속 항목인 저장소를 확인합니다.
  • Bzlmod로 이전: 관련 WORKSPACE 종속 항목을 Bzlmod에 상응하는 항목으로 변환합니다. 이 절차는 두 단계로 이루어져 있습니다.
    1. 확인된 모든 직접 종속 항목을 MODULE.bazel 파일에 도입합니다.
    2. Bzlmod가 사용 설정된 상태로 지정된 타겟을 빌드한 다음 인식 가능한 오류를 반복적으로 식별하고 수정합니다. 이 단계는 첫 번째 단계에서 일부 종속 항목이 누락될 수 있으므로 필요합니다.
  • 마이그레이션 보고서 생성: 마이그레이션 프로세스를 문서화하는 migration_info.md 파일을 만듭니다. 이 보고서에는 직접 종속 항목 목록, 생성된 Bzlmod 선언, 마이그레이션을 완료하는 데 필요할 수 있는 수동 단계가 포함됩니다.

마이그레이션 도구는 다음을 지원합니다.

  • Bazel 중앙 레지스트리에서 사용할 수 있는 종속 항목
  • 사용자 정의 맞춤 저장소 규칙
  • 패키지 관리자 종속 항목
    • Maven
    • Go
    • Python

중요 사항:

  • 마이그레이션 도구는 최선을 다해 제공되는 유틸리티입니다. 항상 추천의 정확성을 다시 한번 확인하세요.
  • Bazel 7로 마이그레이션 도구를 사용합니다 (Bazel 8에서는 지원되지 않음).

마이그레이션 도구 사용 방법

시작하기 전에

  • WORKSPACE와 Bzlmod를 모두 강력하게 지원하는 최신 Bazel 7 버전으로 업그레이드하세요.
  • 프로젝트의 기본 빌드 타겟에 대해 다음 명령어가 성공적으로 실행되는지 확인합니다.

    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
cd 
migrate2bzlmod -t 

이 스크립트에서 생성된 파일

  • MODULE.bazel - Bzlmod의 중앙 매니페스트 파일로, 프로젝트의 메타데이터와 다른 Bazel 모듈에 대한 직접 종속 항목을 선언합니다.
  • migration_info.md - 이전 도구가 실행된 방법에 관한 단계별 안내를 제공하는 파일로, 필요한 경우 이전 프로세스를 수동으로 완료하는 데 도움이 되도록 설계되었습니다.
  • resolved_deps.py - 프로젝트의 WORKSPACE 파일을 분석하여 생성된 프로젝트의 외부 종속 항목의 포괄적인 목록을 포함하며 전환 중에 참조로 사용됩니다.
  • query_direct_deps - 프로젝트의 WORKSPACE 파일에서 --output=build로 Bazel을 호출하여 획득한 사용된 타겟에 관한 이전 관련 정보를 포함합니다. 이 파일은 주로 이전 스크립트에 의해 사용됩니다.
  • extension_for_XXX - 모듈 확장 프로그램 정의가 포함된 파일입니다. 이전 도구는 표준 Bazel 모듈이 아니지만 Bzlmod의 모듈 확장 프로그램을 사용하여 관리할 수 있는 종속 항목에 대해 이러한 파일을 생성합니다.

플래그

이 이전 스크립트에서 사용할 수 있는 플래그는 다음과 같습니다.

  • --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.

다음과 같은 중요한 정보를 제공합니다.

  • WORKSPACE 파일을 사용하여 선언되고 로드된 모든 외부 저장소에 관한 정보가 포함된 ./resolved_deps.py 파일을 생성합니다.
  • RESOLVED 키워드는 도구에서 해결되고 MODULE.bazel 파일에 추가되는 모든 종속 항목을 설명합니다.
  • IMPORTANT 키워드는 시간을 투자할 가치가 있는 중요한 정보를 설명합니다.
  • 이 예시에서는 모든 종속성이 --nobuild 플래그를 사용하여 해결되었습니다.
  • 전체 빌드 (명령어 지정)를 실행하고 잠재적인 오류 (예: 도구 모음이 올바르게 등록되지 않음)를 수동으로 수정하는 것이 중요합니다.
  • migration_info.md 파일에는 이전에 대한 세부정보가 포함되어 있습니다. 이 섹션에서 세부정보를 확인하세요.

변환

이 섹션에서는 WORKSPACE 파일에서 MODULE.bazel로 코드를 이전하는 방법을 보여줍니다.

WORKSPACE - Bazel 모듈

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 모듈

bazel_dep(name = "rules_shell", version = "0.6.1")

Workspace - Go 확장 프로그램

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 확장 프로그램

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 확장 프로그램

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 - 저장소 규칙

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 - Module extension

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 마이그레이션 중에 발생할 수 있는 문제를 디버깅하는 데 도움이 되는 유용한 명령어와 정보를 제공합니다.

유용한 팁

  • 버전 재정의 - 종속 항목의 버전을 업그레이드하면 문제가 발생하는 경우가 종종 있습니다. Bzlmod는 MVS 알고리즘으로 인해 종속 항목의 버전을 변경할 수 있습니다. WORKSPACE에 있던 것과 동일하거나 유사한 버전을 사용하려면 single_version_override로 재정의하세요. 이는 WORKSPACE와 Bzlmod 간의 차이점을 디버깅하는 데 유용하지만 장기적으로 이 기능에 의존해서는 안 됩니다.

    single_version_override(module_name = "{dep_name}", version = "{version}")

  • bazel mod 명령어를 사용합니다.

    • show_repo 명령어를 사용하여 지정된 저장소의 버전을 확인합니다. 예를 들면 다음과 같습니다.

      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 파일에서의 구현 방식 이전 마이그레이션 예시에서 이는 다음과 같습니다.

    1. 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를 찾으면 자동으로 사용합니다. 오류가 발생한 경우 이름이 올바르게 추가되었는지 다시 확인할 수 있습니다.
    2. 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")
    3. Maven 확장 프로그램 - Migration of org.antlr (px_deps):

      maven.artifact(
          name = "px_deps",
          group = "org.antlr",
          artifact = "antlr4",
          version = "4.11.1"
      )
    4. 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.mod의 도움으로 Go 모듈로 도입되었습니다. go.modgo.sum를 사용할 수 없는 경우 go 모듈이 MODULE.bazel 파일에 직접 추가됩니다.
      • gazelle_override는 특정 지시어를 추가하는 데 사용됩니다.

의견

기여하려면 bazel-central-registry에서 문제 또는 PR을 만드세요.