76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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
 | 
						|
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 `yarn install` (which depends on whatever
 | 
						|
version you have installed on your machine), you can
 | 
						|
`bazel run @yarn//:yarn`.
 | 
						|
 | 
						|
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
 | 
						|
 | 
						|
## Testing Angular
 | 
						|
 | 
						|
- Test package in node: `bazel test packages/core/test:test`
 | 
						|
- Test package in karma: `bazel test packages/core/test:test_web`
 | 
						|
- Test all packages: `bazel test packages/...`
 | 
						|
 | 
						|
You can use [ibazel] to get a "watch mode" that continuously
 | 
						|
keeps the outputs up-to-date as you save sources. 
 | 
						|
 | 
						|
### Debugging a Node Test
 | 
						|
 | 
						|
- Open chrome at: [chrome://inspect](chrome://inspect)
 | 
						|
- Click on  `Open dedicated DevTools for Node` to launch a debugger.
 | 
						|
- Run test: `bazel test packages/core/test:test --config=debug`
 | 
						|
 | 
						|
The process should automatically connect to the debugger.
 | 
						|
 | 
						|
### Debugging a Karma Test
 | 
						|
 | 
						|
- Run test: `bazel run packages/core/test:test_web`
 | 
						|
- Open chrome at: [http://localhost:9876/debug.html](http://localhost:9876/debug.html)
 | 
						|
- Open chrome inspector
 |