升級與維護
為日後需要的範本更新,準備評估、合併、遷移、驗證和恢復方法。
專案暫時沒有升級需求時,可以繼續使用目前版本。本章是供日後參考的維護指南,不要求現在下載新版、更新相依套件、執行遷移或重新部署,也未指定必須升級至哪個目標版本。
初始化後的專案已包含範本原始碼,後續變更由專案自行管理。更新範本需要比較差異並合併,無法像替換一般相依套件一樣自動完成。
先分清楚幾種「更新」
| 操作 | 實際作用 | 是否會自動更新既有業務程式碼 |
|---|---|---|
| 更新 Saavo CLI | 更新建立專案等工具功能 | 不會 |
| 重新建立一個範本專案 | 取得另一份初始化後的原始碼 | 不會合併至原專案 |
| 更新 npm 相依套件 | 變更相依套件版本,執行行為也可能改變 | 不會同步範本設定和業務實作 |
| 合併新版範本 | 將選定的原始碼變更引入自己的專案 | 需要逐項評估與處理 |
npm run deploy:update | 驗證並發布目前工作目錄中的應用程式 | 不會下載新版範本 |
修改 config/upgrade.ts | 設定 OAuth 授權頁面的方案升級建議 | 與專案版本升級無關 |
目前 CLI 沒有自動合併既有專案的 upgrade 指令,saavo refresh 更新的是登入驗證資訊,也不是更新專案原始碼。
什麼時候值得安排升級
先從實際需求出發:新版是否修正了自己遇到的問題、是否涉及正在使用的安全性或執行元件,以及是否提供確實需要的功能。如果變更只涉及未使用的功能,可以記錄後暫緩處理,不需要只為了讓版本號碼一致而變更業務。
需要處理的問題,也不一定要求完整合併範本。可以採用一組相關修正,但必須檢查它們依賴的型別、資料結構、設定與測試,不能只複製最顯眼的一個函式。
本章分為三篇
- 評估與合併範本更新:確認範本來源,比較舊範本、新範本和自己的專案,決定引入哪些變更。
- 資料與設定遷移:處理既有資料庫、設定、資源繫結和已儲存的業務識別碼,辨識不相容變更。
- 驗證、發布與維護紀錄:驗證舊資料與新行為,依發布階段判斷恢復方式,保留下次維護需要的資訊。
沒有資料庫或資源變更的更新,可以只閱讀第一篇和第三篇,不需要為了「完成升級流程」而額外撰寫遷移。
現在可以保留的資訊
以下紀錄有助於日後比較,但不需要現在改變專案的執行方式:
- 初始化時取得的範本名稱、版本和原始碼來源。
- 專案初始提交,以及目前應用程式自己的版本與發布提交。
- 自己修改過的核心模組、長期自訂內容和已知限制。
- 目前 Worker 與資源的對應關係,以及原有驗證資訊的安全儲存位置。
CLI 會將新專案的 package.json 版本初始化為 0.0.1。這是應用程式自己的版本,不能用來反推範本版本。範本來源不明確時,應註明未知,再依初始檔案和取得原始碼時的紀錄確認,避免猜測。
有具體目標後再執行
後文指令是日後維護時的操作範例。執行前應已確認目標版本、變更範圍和資料保護方式,尤其不要將重設資料庫或重新產生 SAAS_SECRET 當作例行升級步驟。