升級與維護

為日後需要的範本更新,準備評估、合併、遷移、驗證和恢復方法。

專案暫時沒有升級需求時,可以繼續使用目前版本。本章是供日後參考的維護指南,不要求現在下載新版、更新相依套件、執行遷移或重新部署,也未指定必須升級至哪個目標版本。

初始化後的專案已包含範本原始碼,後續變更由專案自行管理。更新範本需要比較差異並合併,無法像替換一般相依套件一樣自動完成。

先分清楚幾種「更新」

操作實際作用是否會自動更新既有業務程式碼
更新 Saavo CLI更新建立專案等工具功能不會
重新建立一個範本專案取得另一份初始化後的原始碼不會合併至原專案
更新 npm 相依套件變更相依套件版本,執行行為也可能改變不會同步範本設定和業務實作
合併新版範本將選定的原始碼變更引入自己的專案需要逐項評估與處理
npm run deploy:update驗證並發布目前工作目錄中的應用程式不會下載新版範本
修改 config/upgrade.ts設定 OAuth 授權頁面的方案升級建議與專案版本升級無關

目前 CLI 沒有自動合併既有專案的 upgrade 指令,saavo refresh 更新的是登入驗證資訊,也不是更新專案原始碼。

什麼時候值得安排升級

先從實際需求出發:新版是否修正了自己遇到的問題、是否涉及正在使用的安全性或執行元件,以及是否提供確實需要的功能。如果變更只涉及未使用的功能,可以記錄後暫緩處理,不需要只為了讓版本號碼一致而變更業務。

需要處理的問題,也不一定要求完整合併範本。可以採用一組相關修正,但必須檢查它們依賴的型別、資料結構、設定與測試,不能只複製最顯眼的一個函式。

本章分為三篇

  1. 評估與合併範本更新:確認範本來源,比較舊範本、新範本和自己的專案,決定引入哪些變更。
  2. 資料與設定遷移:處理既有資料庫、設定、資源繫結和已儲存的業務識別碼,辨識不相容變更。
  3. 驗證、發布與維護紀錄:驗證舊資料與新行為,依發布階段判斷恢復方式,保留下次維護需要的資訊。

沒有資料庫或資源變更的更新,可以只閱讀第一篇和第三篇,不需要為了「完成升級流程」而額外撰寫遷移。

現在可以保留的資訊

以下紀錄有助於日後比較,但不需要現在改變專案的執行方式:

  • 初始化時取得的範本名稱、版本和原始碼來源。
  • 專案初始提交,以及目前應用程式自己的版本與發布提交。
  • 自己修改過的核心模組、長期自訂內容和已知限制。
  • 目前 Worker 與資源的對應關係,以及原有驗證資訊的安全儲存位置。

CLI 會將新專案的 package.json 版本初始化為 0.0.1。這是應用程式自己的版本,不能用來反推範本版本。範本來源不明確時,應註明未知,再依初始檔案和取得原始碼時的紀錄確認,避免猜測。

有具體目標後再執行

後文指令是日後維護時的操作範例。執行前應已確認目標版本、變更範圍和資料保護方式,尤其不要將重設資料庫或重新產生 SAAS_SECRET 當作例行升級步驟。

遇到正在發生的故障,請先查疑難排解。日常發布自己的業務變更,依部署上線操作即可。