> ## Documentation Index
> Fetch the complete documentation index at: https://site.aspect.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Get started with Bazel for JavaScript, TypeScript, Node.js, and the web, learning the Aspect-supported modules and tooling that power modern JS monorepos.

{!user.loggedIn ? (
<Tip>
<a href="https://auth.aspect.build/oauth/account/sign-up">Sign up</a> for a free Aspect account to access the full training course. Already have one? <a href="/login?redirect=%2Flearning%2Fbazel-105">Log in</a>.
</Tip>
) : null}

This comprehensive training course will guide you through building modern JavaScript and TypeScript applications with Bazel.

The JavaScript ecosystem moves quickly. New tools pop up monthly, and many of them evolve to be build systems, either intentionally or accidentally.

The Aspect team has been developing Bazel support for JavaScript since 2017. As the industry experts we're excited to show you how well this tooling can work for your team.

<img src="https://mintcdn.com/aspectbuild/x1L7Iep716jCyJVo/learning/bazel-105/rules_nodejs_commits.png?fit=max&auto=format&n=x1L7Iep716jCyJVo&q=85&s=a26bac15e1fbb334bbdcfe5a6e6a9fda" alt="rules_nodejs commit history" width="1826" height="1200" data-path="learning/bazel-105/rules_nodejs_commits.png" />

**Before you begin**, ensure you have completed the [Bazel 101](/learning/bazel-101) course to understand the core Bazel concepts. Now, let's get started.

## Tooling

This guide uses a combination of Bazel modules and performance-optimized tools.

### Bazel modules

The following modules form the foundation of the JavaScript toolchain within Bazel:

* **Runtime environment** —  The  [`rules_nodejs`](https://registry.bazel.build/modules/rules_nodejs) module supplies a fully isolated `node.js` toolchain, both for running build tools and for server application runtimes.
* **Package management** —  The [`aspect_rules_js`](https://registry.bazel.build/modules/aspect_rules_js) module adds `pnpm` package manager support, and includes basic rules for building, testing, and running JavaScript code.
* **TypeScript support** —  The [`aspect_rules_ts`](https://registry.bazel.build/modules/aspect_rules_ts) module adds type-checking and transpilation to JavaScript.

### Performance optimized build tools

Bazel works with virtually any JavaScript tooling. However, you will experience the best performance with tools that have minimal startup time. This guide uses Rust-based and Go-based tools for optimal performance:

* [ESBuild](https://esbuild.github.io/): A fast JavaScript bundler written in Go.
* [SWC](https://swc.rs/): A fast Rust-based tool for compiling JavaScript/TypeScript.
* [Vite](https://vite.dev/) A modern development server that provides a fast development experience.
  <Note>Additional performance improvements via  [`typescript-go`](https://github.com/microsoft/typescript-go)are planned for future releases.</Note>

### Development experience

Finally, to make our terminal experience great. Install the [Aspect CLI](/docs/cli/overview), it makes Bazel much easier to use by providing a familiar task runner interface, similar to `package.json` scripts.

Next, you'll build a basic `Node.js` application with Bazel.

<Card title="Delivered by Zipline" img="https://mintlify.s3.us-west-1.amazonaws.com/aspectbuild/learning/zipline.png" href="https://www.zipline.com/">
  Sponsorship for development of this training course was provided by Zipline.
  Thank you!
</Card>
