angular-cn/docs/BAZEL.md

1.9 KiB

Building Angular with Bazel

Note: this doc is for developing Angular, it is not public documentation for building an Angular application with Bazel.

The Bazel build tool (http://bazel.build) provides fast, reliable incremental builds. We plan to migrate Angular's build scripts to Bazel.

Installation

Install Bazel from the distribution, see install instructions. On Mac, just brew install bazel.

Bazel will install a hermetic version of Node, npm, and Yarn when you run the first build.

Configuration

The WORKSPACE file indicates that our root directory is a Bazel project. It contains the version of the Bazel rules we use to execute build steps, from build_bazel_rules_typescript. The sources on GitHub are published from Google's internal repository (google3).

That repository defines dependencies on specific versions of all the tools. You can run the tools Bazel installed, for example rather than npm install (which depends on whatever version you have installed on your machine), you can bazel run @build_bazel_rules_typescript_node//:bin/npm install.

Bazel accepts a lot of options. We check in some options in the .bazelrc file. See the bazelrc doc. For example, if you don't want Bazel to create several symlinks in your project directory (bazel-*) you can add the line build --symlink_prefix=/ to your .bazelrc file.

Building Angular

  • Build a package: bazel build packages/core
  • Build all packages: bazel build packages/...

You can use ibazel to get a "watch mode" that continuously keeps the outputs up-to-date as you save sources. Note this is new as of May 2017 and not very stable yet.