在 Google,我们使用名为Bazel的工具构建所有软件。在过去的 12 年多里,我们一直在使用它来构建任何规模的项目 – 从小型内部应用程序到 Gmail、Google Drive 和 Google Cloud Console 等大型应用程序。
由于其特性——封闭性、并行性和增量性,Bazel 能够实现快速构建,这与我们所做的更改成正比,仅重建受更新文件影响的工件。
在过去的两年里,我们一直致力于让 Google 之外的 Angular 开发人员能够使用相同的工作流程并加快构建速度。在 Angular CLI 版本 8 中,我们很高兴推出可选的 Bazel 预览版,它允许您使用您习惯的相同 Angular CLI 命令透明地使用 Bazel!您可以在下面找到Alex Eagle的 ng-conf 选择加入预览版的官方公告:
我们一直在与 Google 的Bazel 团队密切合作,以减小 Bazel 二进制文件的大小并改进其与外部 Node.js 生态系统的集成。
在过去的几个月里,我们引入了CLI 构建器,它允许我们更改一些内置 Angular CLI 命令的实现并创建新命令。使用@angular/bazel
,我们创建了ng build
、 ng serve
和ng test
命令的新实现,这些命令在内部调用 Bazel。这样,我们就可以使用我们已经熟悉的命令行界面,而不必了解 CLI 在幕后使用的构建工具!
今天,我们支持标准 Angular CLI 项目、基于路由的代码分割、Sass、第三方依赖项等等!如果您尝试选择加入预览,则可以期待以下一些功能:
BUILD.bazel
文件。使用 Bazel 的开发人员在BUILD.bazel
文件中描述他们的构建过程(您可以将这些文件视为gulpfile.js
或webpack.config.js
),其中每个BUILD.bazel
文件定义一个包,每个包定义一个单独的编译单元。对于小型项目,我们会自动生成构建配置,并且不会使用 Angular CLI 将其公开给开发人员2019 年,我们将重点改进 CLI 中 Bazel 功能提供的功能集。我们正在研究的选择加入预览的一些限制是:
Bazel 提供的一些有吸引力的功能包括:
您今天可以通过手动管理构建配置来尝试所有这些功能。
在尝试 Bazel 的选择性加入预览之前,请确保您使用的是 Angular CLI 版本 8 或更高版本。
要在新项目中尝试 Bazel 与 Angular CLI 集成,您可以提供自定义原理图集合:
// new-bazel-project.sh
npm install -g @angular/bazel
ng new my-app --collection=@angular/bazel
一旦您使用 Bazel 原理图创建了新项目,您就可以按照您习惯的方式运行ng serve
或ng build
!有一些区别:
ng build
默认生成生产版本,因此无需指定--prod
标志dist/bin/src/prodapp
下输出生产资源请记住,第一个生产构建可能需要比预期更长的时间,直到 Bazel 填充其缓存。 Bazel 还将执行一些与我们即将推出的与 npm 更好的互操作性的持续努力相关的额外操作。
有关更多信息,请查看 angular.io 上的Bazel 指南。
我们专注于提供您今天所了解的 Angular CLI 功能,但使用 Bazel 实现更快的增量构建。我们正在努力扩展支持的功能集,直到达到与 CLI 的当前功能相当的水平。在此之前,如果您遇到任何受支持功能的问题,请在GitHub上提出问题或将反馈发送至devrel@angular.io 。
文章来源地址:https://blog.angular.dev/try-bazels-opt-in-preview-in-angular-cli-b9430bd00e82