打包

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

命名

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

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

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

如果你是在分支一个现有包以提供修复,你可以保留相同的名称,但在你自己的作用域下发布。不过请记住,如果原始维护者对你的贡献没有反应,分叉应该总是最后的选择。

目录结构

以下是一个节点包的典型目录结构:

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

对于包内使用的目录结构没有严格的要求。如果一个包包含多个节点,它们可以都存在于同一目录中,或者每个节点可以放在自己的子目录中。 示例文件夹必须位于包的根目录中。

在本地测试节点模块

要在本地测试节点模块,可以使用 npm install <folder> 命令。这允许你在本地目录开发节点,并在开发期间将其链接到本地的 node-red 安装中。

在你的 node-red 用户目录中,通常是 ~/.node-red,运行:

npm install <node 模块位置的路径>

这将创建一个适当的符号链接到该目录,以便 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"  : "一个用于 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 寻求帮助。