2017-07-11 15:48:50 -04:00
|
|
|
# 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.
|
|
|
|
|
|
|
|
[install]: https://bazel.build/versions/master/docs/install.html
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
The `WORKSPACE` file indicates that our root directory is a
|
|
|
|
Bazel project. It contains the version of the Bazel rules we
|
2017-07-21 17:11:35 -04:00
|
|
|
use to execute build steps, from `build_bazel_rules_typescript`.
|
2017-07-11 15:48:50 -04:00
|
|
|
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
|
2017-09-21 09:39:43 -04:00
|
|
|
example rather than `yarn install` (which depends on whatever
|
2017-07-11 15:48:50 -04:00
|
|
|
version you have installed on your machine), you can
|
2017-09-21 09:39:43 -04:00
|
|
|
`bazel run @yarn//:yarn`.
|
2017-07-11 15:48:50 -04:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
[GitHub]: https://github.com/bazelbuild/rules_typescript
|
|
|
|
[bazelrc doc]: https://bazel.build/versions/master/docs/bazel-user-manual.html#bazelrc
|
|
|
|
|
|
|
|
## 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.
|
|
|
|
|
|
|
|
[ibazel]: https://github.com/bazelbuild/bazel-watcher
|