手把手帶你初始化一個angular庫

潘杰發表於2024-12-11

在使用angular的過程中,我們希望將一些公共的元件等剝離到一個單獨的庫中,然後供我們在其它的angular專案中直接匯入。

本文將展示如何初始化並整合測試一個angular庫。

angular cli

首先我們需要確認angular的版本,比如我當前計劃初始化適用於angular18版本的庫,則需要在全域性先安裝18版本的angular-cli,然後使用 ng version來進行版本確認:

命令如下:

npm install -g @angular/cli@18.0.0
ng version

全域性展示如下:

(base) panjie@panjiedeMac-Studio ~ % npm install -g @angular/cli@18.0.0

added 22 packages, removed 93 packages, and changed 203 packages in 17s

40 packages are looking for funding
  run `npm fund` for details
(base) panjie@panjiedeMac-Studio ~ % ng version

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/
    

Angular CLI: 18.0.0

此時我們便擁有了一個18版本的全域性cli,使用它可以快速的建立18版本的angular專案。

建立專案

在建立angular庫前,我們需要建立一個用於整合測試的專案,否則我們只能夠對庫中的元件進行單元測試。而傳統的npm link的方法,並不適用於測試angular庫(會報錯)。

在自己的喜歡的資料夾處,建立angular專案:

ng new angular18

選擇專案使用的stylesheet以及是否啟用SSR後繼續。

建立庫

比如此時我想建立一個名稱為@yunzhi/ng-theme的庫,則可以直接使用關鍵字來建立。

首先我們先進入到angular18專案中,然後再直接建立庫的命令:

(base) panjie@panjiedeMac-Studio ng % cd angular18
(base) panjie@panjiedeMac-Studio angular18 % ng g lib @yunzhi/ng-theme

此時將自動在angular18下建立projects資料夾:

├── projects
│   └── yunzhi
│       └── ng-theme

測試庫

在進行單元測試時,可以使用ng t @yunzhi/ng-theme,在進行整合測試時,可以直接在當前專案中引用庫中的在pubilc-api.ts檔案中丟擲的元素。

釋出庫

ng build @yunzhi/ng-theme

然後進入相應的資料夾npm publish即可。

注意點

在整合測試中引用庫中的元素時,必須要import xxx/pubilc-api.ts,不能夠直接import相關的檔案!因為只有xxx/pubilc-api.ts丟擲的,才可以在庫釋出後被第三方成功引用到。

相關文章