These are build rules for working with Jsonnet files with Bazel.
To use the Jsonnet rules as part of your Bazel project, please follow the instructions on the releases page.
By default for Bzlmod, Bazel will use the Go compiler. Note that the primary development focus of the Jsonnet project is now with the Go compiler. This repository's support for using the C++ compiler is deprecated, and may be removed in a future release.
To use the C++ or Rust compiler of Jsonnet instead, register a different compiler:
Jsonnet compiler | MODULE.bazel directive |
---|---|
Go | jsonnet.compiler(name = "go") |
cpp | jsonnet.compiler(name = "cpp") |
Rust | jsonnet.compiler(name = "rust") |
To use the Rust Jsonnet compiler a Nightly
Rust version for the host tools is
required because -Z bindeps
is needed to compile the Jrsonnet binary.
Add the following snippet to the MODULE.bazel
file:
bazel_dep(name = "rules_rust", version = "0.45.1")
rust_host = use_extension("@rules_rust//rust:extensions.bzl", "rust_host_tools")
rust_host.host_tools(
version = "nightly/2024-05-02",
)
Use the --extra_toolchains
flag to pass the preferred toolchain to the bazel
invocation:
bazel build //... --extra_toolchains=@rules_jsonnet//jsonnet:cpp_jsonnet_toolchain
bazel test //... --extra_toolchains=@rules_jsonnet//jsonnet:rust_jsonnet_toolchain
bazel run //... --extra_toolchains=@rules_jsonnet//jsonnet:go_jsonnet_toolchain
Please refer to the StarDoc generated documentation for instructions on how to use these rules.