60 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Schematics for Bazel
 | |
| 
 | |
| Bazel builder for Angular CLI has been deprecated in version 10.
 | |
| 
 | |
| We believe that a lot of projects would benefit from using Bazel, the same way
 | |
| we do in the Angular repository. We still believe that is true in many cases.
 | |
| However, after experimenting with Bazel schematics for Angular CLI in
 | |
| Angular Labs for the past year, we concluded that invoking Bazel from within
 | |
| CLI is not the best approach to encourage adoption of the technology.
 | |
| Instead, we recommend developers to explore using Bazel directly, and refer to
 | |
| the canonical example [repository](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular)
 | |
| for latest updates and best practices.
 | |
| 
 | |
| In the beginning of this project, we thought it would make Bazel easier for
 | |
| users to adopt if we abstracted the BUILD files management and tooling
 | |
| orchestration within Angular CLI. However, we have come to realize that such
 | |
| abstraction does not encourage users to use Bazel to its full potential.
 | |
| 
 | |
| There are a few other reasons for this deprecation:
 | |
| 
 | |
| 1. Bazel ecosystem for the Web is still evolving at a rapid pace.
 | |
| 2. The introduction of the Angular Ivy compiler enables new ways to use Bazel
 | |
|    in a faster and more efficient manner (see below).
 | |
| 3. Feature parity with Webpack-based Angular CLI is difficult to achieve without
 | |
|    trade-offs that would not be acceptable for many Angular users.  
 | |
|    There is currently a [prototype](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular_bazel_architect)
 | |
|    that showcases how multiple architects within CLI could be orchestrated by Bazel.
 | |
| 
 | |
| ## Migrate from `@angular/bazel`
 | |
| 
 | |
| For users who are currently using Bazel builder, there are a few migration options.
 | |
| 
 | |
| ### Eject the BUILD files
 | |
| 
 | |
| You could leave the Bazel files in your workspace, and manage them manually:
 | |
| 
 | |
| ```
 | |
| ng build --leaveBazelFilesOnDisk
 | |
| ```
 | |
| 
 | |
| If you're using Ivy, in your BUILD files replace `ng_module` with the
 | |
| [`ng_ts_library`](https://github.com/bazelbuild/rules_nodejs/blob/master/examples/angular/tools/angular_ts_library.bzl)
 | |
| rule.
 | |
| This new rule leverages ngtsc plugin supported by `ts_library`, and it is much faster.
 | |
| 
 | |
| For the latest recommendations, please refer to the canonical Angular Bazel [repo](https://github.com/bazelbuild/rules_nodejs/tree/master/examples/angular).
 | |
| 
 | |
| For questions, please ask in the `#angular` channel in http://slack.bazel.build/.
 | |
| 
 | |
| ## Angular CLI
 | |
| 
 | |
| If you'd like to revert to the default Angular CLI builder, you could restore
 | |
| the original Angular config from backup by replacing `angular.json` with
 | |
| `angular.json.bak`.
 | |
| 
 | |
| ## External Resources
 | |
| 
 | |
| 1. Angular ❤️ Bazel leaving Angular Labs  
 | |
|    https://dev.to/bazel/angular-bazel-leaving-angular-labs-51ja
 |