Project: /_project.yaml Book: /_book.yaml

Rules

{% dynamic setvar source_file “site/en/rules/index.md” %} {% include “_buttons.html” %}

The Bazel ecosystem has a growing and evolving set of rules to support popular languages and packages. Much of Bazel's strength comes from the ability to define new rules that can be used by others.

This page describes the recommended, native, and non-native Bazel rules.

Recommended rules {:#recommended-rules}

Here is a selection of recommended rules:

The repository Skylib{: .external} contains additional functions that can be useful when writing new rules and new macros.

The rules above were reviewed and follow our requirements for recommended rules{: .external}. Contact the respective rule set's maintainers regarding issues and feature requests.

To find more Bazel rules, use a search engine, take a look on awesomebazel.com{: .external}, or search on GitHub{: .external}.

Native rules that do not apply to a specific programming language

Native rules are shipped with the Bazel binary, they are always available in BUILD files without a load statement.

Embedded non-native rules {:#embedded-rules}

Bazel also embeds additional rules written in Starlark. Those can be loaded from the @bazel_tools built-in external repository.