quy tắc về kho lưu trữ cục bộ

Báo cáo vấn đề Xem nguồn Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bạn có thể tải các hàm sau đây từ @bazel_tools//tools/build_defs/repo:local.bzl.

Quy tắc để cung cấp các thư mục trong hệ thống tệp cục bộ dưới dạng kho lưu trữ.

Thiết lập

Để sử dụng các quy tắc này trong một tiện ích mô-đun, hãy tải các quy tắc đó trong tệp .bzl rồi gọi các quy tắc đó từ hàm triển khai của tiện ích. Ví dụ: để sử dụng local_repository, hãy làm như sau:

load("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")

def _my_extension_impl(mctx):
  local_repository(name = "foo", path = "foo")

my_extension = module_extension(implementation = _my_extension_impl)

Ngoài ra, bạn có thể trực tiếp gọi các quy tắc kho lưu trữ này trong tệp MODULE.bazel bằng use_repo_rule:

local_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl", "local_repository")
local_repository(name = "foo", path = "foo")

local_repository

load("@bazel//tools/build_defs/repo:local.bzl", "local_repository")

local_repository(name, path, repo_mapping)

Tạo một thư mục cục bộ đã chứa các tệp Bazel có sẵn dưới dạng một kho lưu trữ. Thư mục này phải chứa các tệp BUILD của Bazel và một tệp ranh giới kho lưu trữ. Nếu không chứa các tệp này, hãy cân nhắc sử dụng new_local_repository.

THUỘC TÍNH

name Tên; bắt buộc

Tên riêng cho kho lưu trữ này.

path Chuỗi; bắt buộc

Đường dẫn đến thư mục cần cung cấp dưới dạng kho lưu trữ. Đường dẫn có thể là đường dẫn tuyệt đối hoặc tương đối so với thư mục gốc của không gian làm việc.

repo_mapping Dictionary: String -> String; không bắt buộc

Chỉ trong ngữ cảnh "WORKSPACE": một từ điển từ tên kho lưu trữ cục bộ đến tên kho lưu trữ chung. Điều này cho phép kiểm soát quá trình phân giải phần phụ thuộc của không gian làm việc đối với các phần phụ thuộc của kho lưu trữ này. Ví dụ: mục "@foo": "@bar" khai báo rằng, bất cứ khi nào kho lưu trữ này phụ thuộc vào "@foo" (chẳng hạn như một phần phụ thuộc vào "@foo//some:target", thì kho lưu trữ này thực sự phải phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target"). Thuộc tính này _không_ được hỗ trợ trong ngữ cảnh "MODULE.bazel" (khi gọi một quy tắc kho lưu trữ trong hàm triển khai của tiện ích mô-đun).

new_local_repository

load("@bazel//tools/build_defs/repo:local.bzl", "new_local_repository")

new_local_repository(name, build_file, build_file_content, path, repo_mapping)

Tạo một thư mục cục bộ không chứa các tệp Bazel có sẵn dưới dạng một kho lưu trữ. Thư mục này không cần chứa các tệp BUILD của Bazel hoặc tệp ranh giới kho lưu trữ; các tệp này sẽ được tạo bởi quy tắc kho lưu trữ này. Nếu thư mục đã chứa các tệp Bazel, hãy cân nhắc sử dụng local_repository.

THUỘC TÍNH

name Tên; bắt buộc

Tên riêng cho kho lưu trữ này.

build_file Nhãn; không bắt buộc

Một tệp dùng làm tệp BUILD cho kho lưu trữ này. Bạn phải chỉ định chính xác một trong hai thuộc tính "build_file" và "build_file_content". Tệp được đề cập bằng nhãn này không cần phải có tên là BUILD, nhưng có thể có tên là BUILD. Một tên như "BUILD.new-repo-name" có thể phù hợp để phân biệt tên này với các tệp BUILD thực tế.

build_file_content Chuỗi; không bắt buộc

Nội dung của tệp BUILD sẽ được tạo cho kho lưu trữ này. Bạn phải chỉ định chính xác một trong hai thuộc tính "build_file" và "build_file_content".

path Chuỗi; bắt buộc

Đường dẫn đến thư mục cần cung cấp dưới dạng kho lưu trữ. Đường dẫn có thể là đường dẫn tuyệt đối hoặc tương đối so với thư mục gốc của không gian làm việc.

repo_mapping Dictionary: String -> String; không bắt buộc

Chỉ trong ngữ cảnh "WORKSPACE": một từ điển từ tên kho lưu trữ cục bộ đến tên kho lưu trữ chung. Điều này cho phép kiểm soát quá trình phân giải phần phụ thuộc của không gian làm việc đối với các phần phụ thuộc của kho lưu trữ này. Ví dụ: mục "@foo": "@bar" khai báo rằng, bất cứ khi nào kho lưu trữ này phụ thuộc vào "@foo" (chẳng hạn như một phần phụ thuộc vào "@foo//some:target", thì kho lưu trữ này thực sự phải phân giải phần phụ thuộc đó trong "@bar" được khai báo trên toàn cầu ("@bar//some:target"). Thuộc tính này _không_ được hỗ trợ trong ngữ cảnh "MODULE.bazel" (khi gọi một quy tắc kho lưu trữ trong hàm triển khai của tiện ích mô-đun).