打包

节点可以作为模块打包并发布到 npm 仓库。这使得它们及其可能有的任何依赖项都易于安装。

命名

我们于 2022 年 1 月 31 日更新了我们的命名要求。以下规定适用于在该日期之后首次发布的模块。

包应使用作用域名称 - 例如 @myScope/node-red-sample。这可以是在用户作用域下,也可以是在组织作用域下。

在作用域名称下发布的节点对其名称没有进一步的要求。它们可以使用 @myScope/node-red-sample 或仅使用 @myScope/sample - 尽管名称中包含 node-red 有助于将模块与项目关联起来。

如果您为了提供修复而复刻(fork)一个现有包,您可以保留相同的名称,但在您自己的作用域下发布。但请记住,只有在原始维护者对您的贡献没有响应时,复刻才应是最后的手段。

目录结构

这是一个典型的节点包目录结构

├── LICENSE
├── README.md
├── package.json
├── examples
    │   ├── example-1.json
    │   └── example-2.json
└── sample
    ├── icons
    │   └── my-icon.svg
    ├── sample.html
    └── sample.js

对于包内使用的目录结构没有严格的要求。如果一个包包含多个节点,它们可以都存在于同一个目录中,也可以分别放在各自的子目录中。`examples` 文件夹必须位于包的根目录。

在本地测试节点模块

要在本地测试一个节点模块,可以使用 npm install <folder> 命令。这允许您在本地目录中开发节点,并在开发过程中将其链接到本地的 Node-RED 安装中。

在您的 Node-RED 用户目录(通常是 ~/.node-red)中,运行

npm install <path to location of node module>

这会创建到该目录的相应符号链接,以便 Node-RED 在启动时能发现该节点。对节点文件的任何更改,只需重启 Node-RED 即可生效。

package.json

除了常规条目外,package.json 文件必须包含一个 node-red 条目,其中列出了要由运行时加载的包含节点的 .js 文件。

如果您在单个文件中有多个节点,您只需列出该文件一次。

如果任何节点依赖于其他 npm 模块,它们必须包含在 dependencies 属性中。

为了帮助节点在 npm 仓库中被发现,文件应在其 keywords 属性中包含 node-red。这将确保该包在按关键字搜索时出现。

注意:请不要添加 `node-red` 关键字,除非您确信该节点稳定、工作正常,并且有足够好的文档供他人使用。
{
    "name"         : "@myScope/node-red-sample",
    "version"      : "0.0.1",
    "description"  : "A sample node for Node-RED",
    "dependencies": {
    },
    "keywords": [ "node-red" ],
    "node-red"     : {
        "nodes": {
            "sample": "sample/sample.js"
        }
    }
}

您应该使用一个 version 条目来指定您的节点支持的 Node-RED 版本。例如,以下内容表示该节点需要 Node-RED 2.0 或更高版本。

"node-red"     : {
    "version": ">=2.0.0",
    "nodes": {
        "sample": "sample/sample.js"
    }
}

README.md

README.md 文件应描述节点的功能,并列出使其正常工作所需的任何先决条件。包含节点 html 文件的 info 选项卡部分未包含的任何额外说明,甚至是一个演示其用法的小示例流,也可能很有用。

该文件应使用 GitHub 风格的 markdown 进行标记。

LICENSE

请包含一个许可证文件,以便他人了解他们可以用您的代码做什么和不能做什么。

发布到 npm

有很多关于将包发布到 npm 仓库的指南。一个基本的概述可在此处找到。

添加到 flows.nodered.org

自 2020 年 4 月起,Node-RED 流库不再能够自动索引和更新在 npm 上发布的带有 node-red 关键字的节点。相反,必须手动提交请求。

为此,请确保满足所有打包要求。要向库中添加新节点,请单击库页面顶部的 + 按钮,然后选择“node”选项。此按钮会将您带到添加节点页面。在这里,会重复列出要求,并描述将其添加到库中的步骤。

要更新现有节点,您可以像添加新节点一样重新提交它,或者通过节点在流库页面上的“请求刷新”链接来请求刷新。这仅对已登录用户可见。

如果在那之后它仍未出现,您可以在 Node-RED 论坛Slack 上寻求帮助。