Skip to main content
Bazel is Google’s Open Source Build and Test system, which supports many languages. For two of the most widely used ecosystems, the rulesets the community builds on were written by Aspect, and we maintain them today: rules_py for Python, and rules_js and rules_ts for JavaScript & TypeScript. We also maintain rules_lint, which brings linting and formatting to every language under Bazel. This reference covers those two ecosystems in depth, from first build to advanced patterns, written by the same engineers who wrote the rules.
New to Bazel?
  • Start with Bazel 101 for a language-agnostic introduction.
  • Pick a language section below to get started quickly.
  • Sign up for commercial support, provided by Aspect as a shared Slack channel.

Languages & ecosystems

Python

Built and maintained by Aspect: rules_py. Hermetic Python interpreters, pinned dependencies via uv, and Gazelle-generated BUILD files. Covers testing, virtualenvs, containers, and cross-builds.

JavaScript & TypeScript

Built and maintained by Aspect: rules_js and rules_ts, with pnpm workspaces. Includes integrations for esbuild, webpack, Jest, Cypress, Vite, and Next.js.

Linting & Formatting

Built and maintained by Aspect: rules_lint. First-class linting and formatting for dozens of languages, incremental and cache-aware, with hold-the-line adoption.

More open source

Beyond these rulesets, Aspect maintains a broad portfolio of open-source Bazel tooling, including the Aspect CLI, aspect-gazelle, rules_lint, and bazel-lib. See Open Source Projects for the full listing, and Contributing for how we prioritize community work.