Skip to content

版本與相容性 ​

外掛中有三個版本號,它們的意義各不相同:

版本位置表示什麼
api_versionplugin.json 和交握外掛協定的世代,目前為 1。
versionplugin.json外掛本身的發佈版本,使用語意化版本。
min_nginx_ui_versionplugin.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)是否存在,而不是依賴版本號。

Released under the AGPL-3.0 License. (350eea3f)