如何在非 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” 中所解释的那样,与常规版本不同,标记版本不能通过版本范围(例如 "^2.0.0")在 package.json 内部进行寻址。 原因是该标签仅指一个版本。 因此,如果软件包维护者选择使用相同的标签标记软件包的更高版本,则 npm update 将收到更高版本。 这应该是可接受的版本,而不是最新发布的版本,package.json 依赖项将必须引用确切的版本,如下所示

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