Node-RED 0.7.0 现已可供下载或通过npm 安装

请阅读升级说明。最重要的是,获取最新代码后别忘了运行 npm update

新功能

当你运行 Node-RED 时,它会尝试加载所有找到的节点。通常你会遇到一些缺少依赖项的节点,因此你会收到许多消息,例如:

16 Apr 21:16:59 - [23-watch.js] Error: Cannot find module 'fs.notify'
16 Apr 21:16:59 - [32-feedparse.js] Error: Cannot find module 'feedparser'

我们对这些消息进行了一些整理,使其对新用户不那么令人生畏。在此版本中,我们默认隐藏这些消息,只提供摘要:

16 Apr 21:23:32 - ------------------------------------------
16 Apr 21:23:32 - [red] Failed to register 10 node types
16 Apr 21:23:32 - [red] Run with -v for details
16 Apr 21:23:32 - ------------------------------------------

如你所见,我们还告诉你如何查看详细信息——通过使用 -v 选项运行。

由于我们现在有几个不同的命令行选项,我们添加了帮助:

$ node red.js -?
Usage: node red.js [-v] [-?] [--settings settings.js] [flows.json]

Options:
  -s, --settings FILE  use specified settings file
  -v                   enable verbose output
  -?, --help           show usage

Documentation can be found at https://nodered.com.cn

无头模式

我们的第一个问题之一就是在追踪器上提出的,即能够以无头模式运行 Node-RED——即不运行 UI。

在之前的版本中,我们为实现此功能做了一些小步尝试,最终在此版本中得以实现。

如果你还记得上一个版本,我们引入了 httpAdminRoothttpNodeRoot 配置设置。这些设置用于定义各自 http 端点的根路径。

你现在可以将这些属性中的任何一个设置为 false(不是字符串 'false',而是布尔类型 false)。这样做可以有效地关闭其各自的端点。为了方便使用,将 httpRoot 设置为 false 是将 httpAdminRoothttpNodeRoot 都设置为 false 的快捷方式。

此外,如果 httpAdminRoothttpNodeRoot 都为 false(或 httpRoot 为 false),并且 httpStatic 未设置,那么我们甚至不会启动 http 服务器。

如果你的流程中有 HTTP-In 节点,并且你将 httpNodeRoot 设置为 false,你现在会收到警告消息,告知你这些节点不可访问。

如果你有调试节点并且 httpAdminRoot 为 false,你将无法访问调试节点输出,除非你也使用它们的新选项将输出发送到 stdout。

UI 更新

在 UI 中,拖动节点时,你可以在开始拖动节点之后shift 键来对齐网格。我们修正了计算选择多个节点时网格位置的一些不一致之处。这使得连接线更容易对齐。

在此版本中,你现在还可以使用光标键实现节点的像素级精确定位。如果同时按下 shift 键,节点将进行大幅移动。

我们增加了对使用 Ctrl-X 剪切工作区中节点的支持,以补充现有的复制 (Ctrl-C) 和粘贴 (Ctrl-V) 操作。

移除旧的已弃用节点

正如之前在邮件列表上宣布的,我们已经移除了一些很久以前就弃用的节点。当我们弃用一个节点时,它会从调色板中消失以防止新使用,但仍保留在运行时中,因此现有流程不受影响。我们移除的节点有:

  • 30-socketin - 旧的简单 tcp 和 udp socket - 现在已被单独的 tcp、udp 和 http 节点取代
  • 30-socketout - 匹配的出站 sockets
  • 32-multicast - 原始组播节点 - 现在已作为 udp 节点的一部分被取代
  • 35-rpi-gpio-in - 使用节点库(不再维护)的原始树莓派输入节点 - 现在已被使用 gpio 的节点取代。
  • 35-rpi-gpio-out - 出站对

弃用 HTTPGet

在此版本中,我们已弃用 httpget 节点。此节点在逻辑上已在一段时间前被 HTTPRequest 节点取代,但我们一直没有正式弃用它。当我指出这一点时,有人指出 httpget 节点有一个功能在其替代节点中不可用:在节点内以编程方式构建 URL 的能力。

httpget 节点允许你指定一个“基本 URL”和一个“附加”选项。当消息到达时,消息 payload 会插入到这两者之间以获取请求的最终 URL。我们没有直接在 HTTPRequest 节点中重现此功能,而是借此机会更好地解决了这个问题。

当在节点本身中配置时,HTTPRequest 节点的 url 属性现在支持 mustache 样式模板标签。这允许使用传入消息的任何属性动态生成 URL。例如,一个 URL 如下:

http://example.com/?s=

以及传入消息如下:

{
    topic: "foo",
    user: "fred",
}

将生成 URL:

http://example.com/foo/?s=fred

你仍然可以自己构建 URL 并通过消息的 url 属性传入 - 这将覆盖你在节点中配置的任何内容。

其他节点更新

  • 调试节点现在可以选择将其输出发送到 stdout。此外,点击侧边栏中的调试消息,如果需要,将在工作区中切换选项卡以显示消息来源。
  • Delay 节点有一个新选项,用于在限速模式下丢弃中间消息
  • Sentiment 节点接受一组单词-值对以自定义其评分

  • 为以下内容添加了节点到 node-red-nodes 仓库:
    • Beaglebone Black 硬件 - 模拟、数字和脉冲 IO
    • Heatmiser 恒温器
    • Pibrella 板
  • 更新了 Emoncms 和 Hue 节点,增加了新功能
  • Twilio 节点不再需要你在 settings.js 中提供账户详细信息 - 你可以在节点本身中提供。