如何在发布非 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 对发布进行标记,确保了尽管版本 1.2.0-3 比非 Node-API 发布版本 (1.2.0-2) 更晚,但如果有人选择通过简单地运行 npm install iotivity-node 来安装 iotivity-node,它将不会被安装。这将默认安装非 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"
}