1. 程式人生 > 其它 >藉助 SAP 電商雲 Spartacus UI 提供的 Schematics 輔助您的前端專案升級

藉助 SAP 電商雲 Spartacus UI 提供的 Schematics 輔助您的前端專案升級

將 Spartacus 升級到新的主要版本(例如,從 3.x 到 4.0)時,Spartacus 遷移機制會自動修復新版本中修改或刪除的程式碼。

當您處理功能或錯誤,或對 Spartacus 原始碼進行任何其他更改時,您需要更新原理圖作為完成定義的一部分。 通過將這些更新迭代地作為 DoD 的一部分對原始碼進行每次更改,您就不必在開發週期結束時花費大量時間升級遷移機制,因此,它更容易 為新的主要版本準備 Spartacus 庫。

Migration Mechanism

升級到新的主要版本後,遷移機制應該在新的開發週期開始時更新。 比如Spartacus已經從2.x版本更新到3.0,更新後的機制應該儘快合併到develop分支。 這允許貢獻者從開發週期的一開始就包含遷移及其功能和錯誤修復。

Structure for Updating Schematics

下面這個檔案包含了每個 Spartacus 版本對應的遷移指令碼:

projects/schematics/src/migrations/migrations.json

下面是其中一個遷移指令碼的例子:

"migration-v3-constructor-deprecations-03": {
      "version": "3.0.0",
      "factory": "./3_0/constructor-deprecations/constructor-deprecations#migrate",
      "description": "Add or remove constructor parameters"
    },

26 個子檔案:

以 v3 為例:

每個指令碼有四個屬性:name,version, factory 和 description:

name 允許開發人員快速瞭解遷移指令碼在做什麼。 遷移名稱具有以下模式:

migration-v<version>-<migration-feature-name>-<sequence-number>。 

name的要素如下:

  • version:
    指示遷移適用於哪個版本的 Spartacus。

  • migration-feature-name:

遷移功能名稱是一個簡短的名稱,用於描述遷移正在執行的操作。

  • sequence-number: 序列號指示遷移指令碼的執行順序。 例如,如果指令碼的序列號為 03,則在執行遷移指令碼時,它將是要執行的第三個指令碼。

版本對於 Angular 更新機制非常重要。 它用於自動執行特定版本所需的遷移指令碼。 有關更多資訊,請參閱原理圖自述檔案的釋出更新原理圖部分。

factory 指向相關的遷移指令碼。

description 是一個簡短的、自由格式的描述欄位,用於描述遷移指令碼的作用。

Constructor Deprecation

projects/schematics/src/migrations/2_0/constructor-deprecations.ts 執行建構函式遷移任務。 通常,開發人員不需要接觸這個檔案,而是應該在projects/schematics/src/migrations/2_0/constructor-deprecation-data.ts 中描述建構函式的棄用。 CONSTRUCTOR_DEPRECATION_DATA 常量描述了已棄用的建構函式,幷包括 addParams 和 removeParams 屬性,它們允許您分別指定應新增或刪除哪些引數。

Commenting Code

當無法自動遷移程式碼時,我們通常會在客戶的程式碼庫中添加註釋,描述客戶應該如何將他們的專案升級到新版本的 Spartacus。 我們應該只在手動升級很容易並且編寫遷移指令碼太複雜的情況下才這樣做。

projects/schematics/src/shared/utils/file-utils.ts#insertCommentAboveIdentifier 方法在指定識別符號 TypeScript 節點上方添加註釋。

以下是如何新增評論的示例:

  1. 如果您刪除了一個 API 方法,您可以在刪除的方法上方新增一條註釋,建議可以改用哪個方法。

  2. 如果您更改了 NgRx 操作的引數,您可以在更改引數的操作上方添加註釋。

Component Deprecation

與建構函式棄用類似,projects/schematics/src/migrations/2_0/component-deprecations.ts 為元件 *.ts 和 HTML 模板執行元件遷移任務。 通常,開發人員不需要接觸這個檔案,而是應該在projects/schematics/src/migrations/2_0/component-deprecations-data.ts 中描述元件的棄用。 COMPONENT_DEPRECATION_DATA 常量描述了已棄用的元件。

CSS

為了處理 CSS 更改,我們列印了一個指向 CSS 遷移文件的連結,客戶可以在其中查詢哪些 CSS 選擇器在新版本的 Spartacus 中發生了更改。 如果您要更改 CSS 選擇器,只需更新相關文件(例如 3.0 中的樣式更改)。

Adding a Migration

(1) 檢查是否有任何更改的檔案在公共 API 中匯出。 如果否,則無需採取進一步措施。

(2) 檢查您所做的任何更改是否是破壞性更改。 如果沒有,則無需採取進一步措施。 有關更多資訊,請參閱維護公共 API。

(3) 對於每個重大更改,您必須執行以下操作:

a. 通過更新相應的遷移文件檔案(例如 docs/migration/3_0.md)來記錄重大更改,並在必要時確保已新增程式碼註釋。

b. 構建自動化任務,如上面的驗證、建構函式棄用和元件棄用)部分所述。

c. 通過執行測試、嘗試遷移示例應用程式等來測試新增的遷移。

更多Jerry的原創文章,盡在:"汪子熙":