如何與非 Node-API 版本的包一起釋出 Node-API 版本

以下步驟以包 iotivity-node 為例進行說明

  • 首先,釋出非 Node-API 版本
    • 更新 package.json 中的版本號。對於 iotivity-node,版本變為 1.2.0-2
    • 檢查釋出清單(確保測試/演示/文件都正常)
    • npm publish
  • 然後,釋出 Node-API 版本
    • 更新 package.json 中的版本號。在 iotivity-node 的例子中,版本變為 1.2.0-3。對於版本控制,我們建議遵循 semver.org 描述的預釋出版本方案,例如 1.2.0-napi
    • 檢查釋出清單(確保測試/演示/文件都正常)
    • npm publish --tag n-api

在此示例中,使用 n-api 標記該版本確保了,即使使用者選擇透過簡單執行 npm install iotivity-node 來安裝 iotivity-node,也不會安裝版本 1.2.0-3(儘管它晚於已釋出的非 Node-API 版本 1.2.0-2)。這樣會預設安裝非 Node-API 版本。使用者必須執行 npm install iotivity-node@n-api 才能獲取 Node-API 版本。有關將標籤與 npm 一起使用的更多資訊,請檢視 “使用 dist-tags”

如何引入對包的 Node-API 版本的依賴

要將 iotivity-node 的 Node-API 版本新增為依賴項,package.json 將如下所示

"dependencies": {
  "iotivity-node": "n-api"
}

正如 “使用 dist-tags” 中所解釋的,與常規版本不同,帶標籤的版本不能在 package.json 中透過版本範圍(如 "^2.0.0")來指定。原因在於標籤精確地指向一個版本。因此,如果包維護者選擇使用相同的標籤標記一個更高版本的包,npm update 將會獲取到這個更高版本。這對於除最新發布版本之外的版本應該是可以接受的,package.json 的依賴項將需要引用確切的版本,如下所示

"dependencies": {
  "iotivity-node": "1.2.0-3"
}