如何与非 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"
}