我们最近一直在思考的一件事是我们的升级过程。用户如何以尽可能少的精力从 Node-RED 版本 A 升级到版本 B。
默认情况下,我们会将您的数据写入 Node-RED 安装所在的目录。这意味着您不能直接用最新版本的 Node-RED 替换该目录。您必须先备份您的数据。虽然这显然始终是谨慎的做法,但“您的数据”究竟包含哪些文件/目录是一个相当长的列表,容易出错,导致丢失一些东西——特别是对于不习惯复制文件的用户等等。
这也意味着我们经常告诉用户从仓库的 git 克隆运行——因为那里的升级路径只是运行 git pull
和 npm update
。但这让用户运行的是最新的开发代码,而不是最新的稳定版本——这远非理想,原因我稍后会讨论。
我们已经有了 userDir
设置一段时间了,它允许您指向一个目录,所有数据都应该放在那里——这有助于将其与 Node-RED 安装分开。我们关于“一切正常”的规则之一是,我们应该有正确的默认行为。一旦我们要求用户编辑 settings.js 以确保他们的数据在某个合理的位置,我们就失败了。
一个新的默认值
即将发布的 Node-RED 0.10.4 版本将包含 Node-RED 默认行为的更改:用户数据将写入目录 $HOME/.node-red/
。这确保您的数据与 Node-RED 安装分开保存,这意味着升级更容易——您只需升级 Node-RED。
为确保完全向后兼容,Node-RED 在决定数据存储位置时会执行以下步骤
- 如果在启动时明确指定了
userDir
,无论是通过settings.js
(如前所述),还是通过新的命令行参数:node red.js --userDir /var/node-red/data
这意味着已经设置了 userDir
的用户不受影响,如果您想快速切换配置,明确指向特定目录甚至更容易。
- 如果我们在 Node-RED 安装目录中检测到用户数据的存在(特别是
.config.json
文件的存在),我们将继续使用 Node-RED 安装目录来存储数据。
这意味着现有的 Node-RED 安装将继续像以前一样运行。我们不会将现有数据移动到 $HOME/.node-red
- 如果以上都不适用,我们将使用
$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
方法。