我们最近一直在思考的一件事是我们的升级过程。用户如何以尽可能少的精力从 Node-RED 版本 A 升级到版本 B。

默认情况下,我们会将您的数据写入 Node-RED 安装所在的目录。这意味着您不能直接用最新版本的 Node-RED 替换该目录。您必须先备份您的数据。虽然这显然始终是谨慎的做法,但“您的数据”究竟包含哪些文件/目录是一个相当长的列表,容易出错,导致丢失一些东西——特别是对于不习惯复制文件的用户等等。

这也意味着我们经常告诉用户从仓库的 git 克隆运行——因为那里的升级路径只是运行 git pullnpm update。但这让用户运行的是最新的开发代码,而不是最新的稳定版本——这远非理想,原因我稍后会讨论。

我们已经有了 userDir 设置一段时间了,它允许您指向一个目录,所有数据都应该放在那里——这有助于将其与 Node-RED 安装分开。我们关于“一切正常”的规则之一是,我们应该有正确的默认行为。一旦我们要求用户编辑 settings.js 以确保他们的数据在某个合理的位置,我们就失败了。

一个新的默认值

即将发布的 Node-RED 0.10.4 版本将包含 Node-RED 默认行为的更改:用户数据将写入目录 $HOME/.node-red/。这确保您的数据与 Node-RED 安装分开保存,这意味着升级更容易——您只需升级 Node-RED。

为确保完全向后兼容,Node-RED 在决定数据存储位置时会执行以下步骤

  1. 如果在启动时明确指定了 userDir,无论是通过 settings.js(如前所述),还是通过新的命令行参数:node red.js --userDir /var/node-red/data

这意味着已经设置了 userDir 的用户不受影响,如果您想快速切换配置,明确指向特定目录甚至更容易。

  1. 如果我们在 Node-RED 安装目录中检测到用户数据的存在(特别是 .config.json 文件的存在),我们将继续使用 Node-RED 安装目录来存储数据。

这意味着现有的 Node-RED 安装将继续像以前一样运行。我们不会将现有数据移动到 $HOME/.node-red

  1. 如果以上都不适用,我们将使用 $HOME/.node-red。换句话说,全新的安装将执行此操作。

有关如何升级的文档将更新,以包含如何手动将数据迁移到 $HOME/.node-red 的指南。

安装 Node-RED

此更改还带来了 Node-RED 推荐安装方式的更改。我们不再推荐下载 zip 文件,而是推荐使用 npm 安装 Node-RED。

以下命令将进行 Node-RED 的全局安装

sudo npm install -g node-red

这还将把新命令 node-red 添加到您的路径中,允许您从任何目录运行。

当有新版本可用时,您只需运行以下命令即可安装它

sudo npm update -g node-red

如果您选择本地安装而不是全局安装,您仍然可以使用 npm update 命令升级,但您将不会在路径中获得 node-red 命令。

从 git 运行

一些用户选择克隆 git 仓库并从那里运行。这具有获取所有最新更改的优势,但始终存在拾取仍在开发中的代码的风险。

在不久的将来,我们将在开发过程中添加一个构建步骤,它将位于 git 中的代码和构成 Node-RED 可运行实例之间。

您将无法直接从 git 克隆运行 Node-RED,而无需先运行构建。这将需要安装开发依赖项——而不仅仅是生产依赖项。

我们将在它进入仓库之前分享更多细节。但作为提前警告,如果您只是为了获取最新代码而从 git 运行,请做好准备。

如果您为了方便在版本之间升级而从 git 运行,那么一旦我们发布 0.10.4,您应该转而使用上面的 npm install -g 方法。