變更資料模型:$ARGUMENTS
儲存的資料存在於隊友電腦和伺服器上已經存在的 JSON 檔案中, 因此每次變更都必須能夠讀取舊檔案而不會發生錯誤。
步驟
- 讀取
src/lib/links/schema.ts、src/lib/links/store.ts和data/seed.json。 - 判斷變更是新增性的(新的可選欄位,有預設值)還是破壞性的(重新命名、移除、新的必填欄位、型別變更)。
- 新增性:在
linkSchema中使用.optional()或.default(...)加入該欄位,如果使用者可以設定,則也加入linkInputSchema。無需遞增版本。 - 破壞性:遞增資料檔案
version常數(例如1→2)。將舊 schema 保留為dataFileV1Schema,並在store.ts中加入一個upgradeV1toV2(data)函數,當load()讀取到 v1 檔案時會套用該函數。絕不在讀取時改寫檔案;下一次save()會寫入 v2 格式。
- 新增性:在
- 更新
data/seed.json為新格式。 - 僅當任務要求時才更新 UI。
src/lib/links/store.test.ts中的測試:- 新欄位需能透過
createLink和listLinks進行完整的序列化與反序列化。 - 對於破壞性變更:將一個 v1 檔案寫入臨時資料路徑,並斷言
listLinks()回傳已升級的連結,且後續的createLink會儲存一個 v2 檔案。
- 新欄位需能透過
- 執行
npm run check和npm run build。 - 在你的摘要中,說明變更是新增性還是破壞性的,以及對現有資料檔案的影響。