前序:

你可以创建和发布新库来扩展 Angular 的功能。如果你发现需要在多个应用中解决同样的问题(或者想与其他开发者共享你的解决方案),你就有了一个潜在的库。

创建库

  1. 使用 Angular CLI,用以下命令生成一个新库的骨架
ng generate library my-lib 复制代码

2.此时在你的工作区中创建 projects/my-lib 文件夹,里面包含 NgModule 中的一个组件和一个服务。该工作区的配置文件 angular.json 中也添加了一个 'library' 类型的项目。

"projects": {
  ... "my-lib": { "root": "projects/my-lib", "sourceRoot": "projects/my-lib/src", "projectType": "library", "prefix": "lib", "architect": { "build": { "builder": "@angular-devkit/build-ng-packagr:build",
        ... 复制代码

3.使用 CLI 命令来构建、测试和 lint 这个项目

ng build my-lib
   ng test my-lib
   ng lint my-lib 复制代码

注意:

该项目配置的构建器与应用类项目的默认构建器不同。此构建器可以确保库永远使用 AoT 编译器构建,而不必再指定--prod标志。 要让库代码可以复用,你必须为它定义一个公共的 API。这个“用户层”定义了库中消费者的可用内容。该库的用户应该可以通过单个的导入路径来访问公共功能(如NgModules、服务提供商和工具函数)。

库的公共 API 是在库文件夹下的 public-api.ts 文件中维护的。当你的库被导入应用时,从该文件导出的所有内容都会公开。请使用 NgModule 来暴露这些服务和组件。

你的库里应该提供一些文档(通常是 README 文件)来指导别人安装和维护。 ####与 CLI 集成 库中可以包含那些能与 Angular CLI 集成的 schematics

  • 包含一个安装型 schematic,以便ng add可以把你的库添加到项目中。
  • 包含一些生成型 schematic ,以便ng generate可以为项目中的已定义工件(组件,服务,测试等)生成脚手架。
  • 包含一个更新(update)原理图 ,以便ng update可以更新此库的依赖,并针对新版本中的破坏性变更提供辅助迁移。

要了解更多信息,参见 原理图概览供库使用的原理图。 ####发布你的库

使用 Angular CLI 和 npm 包管理器来把你的库构建并发布成 npm 包。默认情况下,库是在 AoT模式 下构建的,因此在构建发布时你不需要指定-prod标志。

ng build my-lib
   cd dist/my-lib
   npm publish 复制代码

如果你之前从未在 npm 中发布过包,就必须创建一个用户帐号。点此阅读发布 npm 包的更多信息。 ####在应用中使用自己的库 你不必把库发布到 npm 包管理器上就可以在自己的应用中使用它,但必须先构建它。 要想在应用中使用你自己的库:

  • 构建该库。在构建之前,无法使用库。
content_copy
   ng build my-lib 复制代码
  • 在你的应用中,按名字从库中导入:
content_copy import { myExport } from 'my-lib'; 复制代码