.bzl 檔案

總覽

Fuchsia 專案遵循官方 Bazel .bzl 樣式指南,但有少數例外。除了常見的 Bazel 樣式指南和最佳做法外,本頁也提供相關指引。

.bzl 檔案最常用於定義規則、巨集和函式,相關資訊請參閱其他指南。

本頁面屬於 Bazel 樣式指南和最佳做法的一部分。

瀏覽權限

載入瀏覽權限

與 .gni 檔案不同,.bzl 檔案支援載入瀏覽權限,可限制載入來源。根據預設,系統不會設下任何限制。

請務必在 .bzl 檔案中指定 visibility:

  • 如果 .bzl 檔案並非專門用於套件外部,請使用 visibility("private")。

    • 尤其是當套件包含公開和私人 .bzl 檔案時,建議將後者放在 private/ 目錄中。Bazel 具有限制在這類目錄中載入檔案的機制。
  • 否則,請使用 visibility([...]) 指定可能使用該套件的套件 (目錄)。

載入 visibility 的語法與目標 visibility 不同:

  • 僅路徑相當於 :__pkg__。

  • /... 後面的路徑相當於 :__subpackages__。

如果是真正要在整個程式碼集中使用的常見目標,則可使用 "//..."。請勿使用公開瀏覽權限 (visibility("public")) [SHAC 錯誤]。不過,在大多數情況下,一組頂層和/或第二層目錄 (例如 "//src/..." 和 "//sdk/lib/...") 就足夠。

符號顯示設定

在 .bzl 檔案中,請在符號名稱前加上底線,限制只能在 .bzl 檔案中存取,防止其他檔案使用,即使在同一個套件 (目錄) 中也一樣。

請勿建立 defs.bzl 檔案

雖然您可能會看到這些符號 (尤其是在第三方存放區中),但定義或匯出不一定會一起使用的多個符號 (如 defs.bzl 檔案中常見的情況) 是一種反模式。請參閱「限制每個 .bzl 檔案匯出的符號」。無論如何,請選擇更具描述性的檔案名稱。