HomeDocs
DocsCommunityTestimonialsUsersGitHubTwitterBlogJobsTermsPrivacyCookies
TermsPrivacyCookies
Hey! These docs are for version 2.14, which is no longer officially supported. Click here for the latest version, 2.17!


Buildifier is a tool for formatting BUILD files with a standard convention.

Pants supports running Buildifier on your Pants BUILD files for several reasons:

  • You might like the style that buildifier uses.

  • You might be incrementally adopting Pants from Bazel, and are already using buildifier.

Please note that there are differences from Bazel's BUILD files (which are Starlark) and Pants' BUILD files (which are Python), so buildifier may issue a syntax error. In practice, these errors should be rare. See https://bazel.build/rules/language#differences_with_python.

Backend: <span style="color: purple"><code>pants.backend.build_files.fmt.buildifier</code></span> Config section: <span style="color: purple"><code>[buildifier]</code></span>

## Basic options

<div style="color: purple">

### `skip`

<code>--[no-]buildifier-skip</code><br> <code>PANTS_BUILDIFIER_SKIP</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>False</code></span>

<br>

If true, don't use Buildifier when running `./pants fmt`.

</div> <br>

<div style="color: purple">

### `args`

<code>--buildifier-args="[&lt;shell_str&gt;, &lt;shell_str&gt;, ...]"</code><br> <code>PANTS_BUILDIFIER_ARGS</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>[]</code></span>

<br>

Arguments to pass directly to Buildifier, e.g. `--buildifier-args='-lint=fix'`.

</div> <br>

## Advanced options

<div style="color: purple">

### `version`

<code>--buildifier-version=<str></code><br> <code>PANTS_BUILDIFIER_VERSION</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>5.1.0</code></span>

<br>

Use this version of Buildifier.

</div> <br>

<div style="color: purple">

### `known_versions`

<code>--buildifier-known-versions="['&lt;str&gt;', '&lt;str&gt;', ...]"</code><br> <code>PANTS_BUILDIFIER_KNOWN_VERSIONS</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">default: <pre>[ "5.1.0|macos&lowbar;x86&lowbar;64|c9378d9f4293fc38ec54a08fbc74e7a9d28914dae6891334401e59f38f6e65dc|7125968", "5.1.0|macos&lowbar;arm64 |745feb5ea96cb6ff39a76b2821c57591fd70b528325562486d47b5d08900e2e4|7334498", "5.1.0|linux&lowbar;x86&lowbar;64|52bf6b102cb4f88464e197caac06d69793fa2b05f5ad50a7e7bf6fbd656648a3|7226100", "5.1.0|linux&lowbar;arm64 |917d599dbb040e63ae7a7e1adb710d2057811902fdc9e35cce925ebfd966eeb8|7171938" ]</pre></span>

<br>

Known versions to verify downloads against.

Each element is a pipe-separated string of `version|platform|sha256|length`, where:



E.g., `3.1.2|macos_x86_64|6d0f18cd84b918c7b3edd0203e75569e0c7caecb1367bbbe409b44e28514f5be|42813`.

Values are space-stripped, so pipes can be indented for readability if necessary.

</div> <br>

<div style="color: purple">

### `use_unsupported_version`

<code>--buildifier-use-unsupported-version=<UnsupportedVersionUsage></code><br> <code>PANTS_BUILDIFIER_USE_UNSUPPORTED_VERSION</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">one of: <code>error, warning</code></span><br> <span style="color: green">default: <code>error</code></span>

<br>

What action to take in case the requested version of Buildifier is not supported.

Supported Buildifier versions: unspecified

</div> <br>

<div style="color: purple">

### `url_template`

<code>--buildifier-url-template=<str></code><br> <code>PANTS_BUILDIFIER_URL_TEMPLATE</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">default: <code>https://github.com/bazelbuild/buildtools/releases/download/{version}/buildifier-{platform}</code></span>

<br>

URL to download the tool, either as a single binary file or a compressed file (e.g. zip file). You can change this to point to your own hosted file, e.g. to work with proxies or for access via the filesystem through a `file:$abspath` URL (e.g. `file:/this/is/absolute`, possibly by [templating the buildroot in a config file](🔗)).

Use `{version}` to have the value from --version substituted, and `{platform}` to have a value from --url-platform-mapping substituted in, depending on the current platform. For example, https://github.com/.../protoc-{version}-{platform}.zip.

</div> <br>

<div style="color: purple">

### `url_platform_mapping`

<code>--buildifier-url-platform-mapping="{'key1': val1, 'key2': val2, ...}"</code><br> <code>PANTS_BUILDIFIER_URL_PLATFORM_MAPPING</code><br>

</div> <div style="padding-left: 2em;"> <span style="color: green">default: <pre>{ "linux&lowbar;arm64": "linux-arm64", "linux&lowbar;x86&lowbar;64": "linux-amd64", "macos&lowbar;arm64": "darwin-arm64", "macos&lowbar;x86&lowbar;64": "darwin-amd64" }</pre></span>

<br>

A dictionary mapping platforms to strings to be used when generating the URL to download the tool.

In --url-template, anytime the `{platform}` string is used, Pants will determine the current platform, and substitute `{platform}` with the respective value from your dictionary.

For example, if you define `{"macos_x86_64": "apple-darwin", "linux_x86_64": "unknown-linux"}`, and run Pants on Linux with an intel architecture, then `{platform}` will be substituted in the --url-template option with unknown-linux.

</div> <br>

## Deprecated options

None