根据Angular官方Githubrepo的定义,Angular的semver、定时发布周期和弃用政策目前适用于这些npm包:@angular/animations@angular/core@angular/common@angular/elements@angular/forms@angular/platform-b??rowser@angular/platform-b??rowser-dynamic@angular/platform-server@angular/upgrade@angular/router@angular/service-worker此列表中有意省略的一个是@angular/compiler,目前被认为是低级API,可能会发生内部变化。这些更改不会影响任何使用更高级别API(命令行界面或通过@angular/platform-b??rowser-dynamic编译的JIT)的应用程序或库。只有非常特定的用例才需要直接访问编译器API(主要是IDE、linter等的工具集成)。@angular/bazel包目前是AngularLabs项目,不在公共API保证范围内。此外,仅涵盖@angular/compiler-cli的命令行用法(不包括直接API用法)。Angular团队开发的其他项目,如angular-cli、AngularMaterial,在未来成熟时将涵盖这些或类似的保证。在支持的包中,Angular提供以下保证:(1)通过主入口点(例如@angular/core)和测试入口点(例如@angular/core/testing)导出的符号。这适用于运行时JavaScript值和TypeScript类型。(2)通过全局命名空间ng导出的Symbols(egng.core)(3)packages位于npm包的bundles/目录下(eg@angular/core/bundles/core.umd.js)以下不是Angular公共API表面:(1)我们包中的任何文件/导入路径,除了/、/testing和/bundles/*以及其他记录在案的包入口点。(2)可注入类(服务和指令)的构造函数-请使用DI获取这些类的实例(3)任何类成员或符号标记为private,或下划线(_),拉丁o(?)禁止和双重禁止拉丁o(??)作为前缀。(4)扩展我们的任何类,除非API文档中专门记录了对此的支持(5)Angular编译器生成的代码的内容和API表面(有一个值得注意的例外:保证从生成的代码导出的NgModuleFactory实例存在和名称)Angular对等依赖项(例如TypeScript、Zone.js或RxJS)不被视为AngularAPI表面的一部分,但它们包含在我们的SemVer政策中。如果更新不会对Angular应用程序造成破坏性更改,我们可能会在次要版本中更新任何这些依赖项的所需版本。导致破坏性更改的对等依赖项更新必须推迟到主要的Angular版本。扩展Angular类除非在API文档中明确说明,否则Angular公共API中的所有类都是最终的(它们不应该被扩展)。不支持扩展此类最终类,因为受保护的成员和内部实现可能会在主要版本之外发生变化。黄金文件Angular跟踪黄金文件中公共API的状态,这些文件由名为PublicAPIGuard的工具维护。如果您在受支持的公共包之一中修改公共API的任何部分,PR可能无法通过CI中的测试,并显示一条错误消息,指示您接受黄金文件。PublicAPIGuard提供了一个Bazel目标来更新给定包的当前状态。如果您以任何方式添加或修改公共API,则必须使用yarn在您选择的终端shell中执行Bazel目标(推荐使用最新版本的bash)。
