版本與相容性
外掛中有三個版本號,它們的意義各不相同:
| 版本 | 位置 | 表示什麼 |
|---|---|---|
api_version | plugin.json 和交握 | 外掛協定的世代,目前為 1。 |
version | plugin.json | 外掛本身的發佈版本,使用語意化版本。 |
min_nginx_ui_version | plugin.json | 外掛支援的最低 Nginx UI 版本。 |
協定世代
只有協定發生不相容的變更時,api_version 才會改變:例如刪除欄位、重新命名鍵、錯誤碼的意義改變。在同一世代內,協定只會增加內容:新的選用欄位、新的能力、新的事件、新的宿主方法、新的插槽。以下兩條規則保證了雙向相容:
- 忽略不認識的內容。 外掛忽略它不認識的 JSON 成員、事件類型和插槽名稱,因此較新的 Nginx UI 不會破壞它。
- 不要依賴選用內容。 外掛把每個選用欄位都視為可能缺少,因此不傳送該欄位的較舊 Nginx UI 也能正常運作。
外掛的 api_version 必須等於 Nginx UI 實作的世代。兩者之間沒有協商:不一致時交握會失敗,並給出明確的錯誤。當第二代出現時,兩代會並列提供文件,直到第一代在事先通知後退役。
外掛版本
version 由你決定。請使用語意化版本:需要使用者採取行動的變更提升主版號,新功能提升次版號,修正提升修訂號。1.2.0-beta.1 這樣的預發佈版本會讓該版本進入較不穩定的發佈通道。
最低 Nginx UI 版本
min_nginx_ui_version 指定外掛支援的最低 Nginx UI 版本,例如因為外掛使用了該版本新增的宿主方法或插槽:
json
"min_nginx_ui_version": "3.0.0"不帶預發布後綴的版本也接受該版本的預發布版本:需要 3.0.0 的外掛可以在 3.0.0-beta.1 上執行。如果要求至少某個預發布版本,請寫明它,例如 3.0.0-rc.2。
它僅供建議。Nginx UI 會顯示它,也可能拒絕啟用需要更新版本的外掛,但它不屬於協定,外掛仍應檢查自己使用的選用功能是否存在。在瀏覽器套件中,請偵測執行環境的選用成員(例如 registry.loadChunk)是否存在,而不是依賴版本號。