前序:
你可以創(chuàng)建和發(fā)布新庫來擴展 Angular 的功能。如果你發(fā)現(xiàn)需要在多個應用中解決同樣的問題(或者想與其他開發(fā)者共享你的解決方案)撤嫩,你就有了一個潛在的庫偎捎。
創(chuàng)建庫
- 使用 Angular CLI,用以下命令生成一個新庫的骨架
ng generate library my-lib
2.此時在你的工作區(qū)中創(chuàng)建 projects/my-lib 文件夾序攘,里面包含 NgModule 中的一個組件和一個服務茴她。該工作區(qū)的配置文件 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申尼、服務提供商和工具函數(shù))遂铡。
庫的公共 API 是在庫文件夾下的 public-api.ts 文件中維護的。當你的庫被導入應用時晶姊,從該文件導出的所有內容都會公開扒接。請使用 NgModule 來暴露這些服務和組件。
你的庫里應該提供一些文檔(通常是 README 文件)來指導別人安裝和維護们衙。
與 CLI 集成
庫中可以包含那些能與 Angular CLI 集成的 schematics 钾怔。
- 包含一個安裝型 schematic,以便
ng add
可以把你的庫添加到項目中蒙挑。 - 包含一些生成型 schematic 宗侦,以便
ng generate
可以為項目中的已定義工件(組件,服務忆蚀,測試等)生成腳手架矾利。 - 包含一個更新(update)原理圖 ,以便
ng [update](https://www.angular.cn/api/forms/NgModel#update)
可以更新此庫的依賴馋袜,并針對新版本中的破壞性變更提供輔助遷移男旗。
要了解更多信息,參見 原理圖概覽 和 供庫使用的原理圖欣鳖。
發(fā)布你的庫
使用 Angular CLI 和 npm 包管理器來把你的庫構建并發(fā)布成 npm 包察皇。默認情況下,庫是在 AoT模式 下構建的泽台,因此在構建發(fā)布時你不需要指定
-prod
標志什荣。
ng build my-lib
cd dist/my-lib
npm publish
如果你之前從未在 npm 中發(fā)布過包,就必須創(chuàng)建一個用戶帳號怀酷。點此閱讀發(fā)布 npm 包的更多信息稻爬。
在應用中使用自己的庫
你不必把庫發(fā)布到 npm 包管理器上就可以在自己的應用中使用它,但必須先構建它蜕依。
要想在應用中使用你自己的庫:
- 構建該庫桅锄。在構建之前,無法使用庫笔横。
content_copy
ng build my-lib
- 在你的應用中竞滓,按名字從庫中導入:
content_copy
import { myExport } from 'my-lib';