节点可以作为模块打包并发布到 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
文件必须包含一个 node-red
条目,列出包含节点的 .js
文件,以便运行时加载。
如果你在一个文件中有多个节点,你只需列出该文件一次。
如果任何节点依赖于其他 npm 模块,它们必须包含在 dependencies
属性中。
为了帮助使节点在 npm 仓库中可发现,文件应该在其 keywords
属性中包含 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 文件应描述节点的功能,并列出使其正常工作的任何先决条件。它还可以包括节点 HTML 文件的 info 标签部分中未包含的任何额外说明,甚至可能包括一个小的示例流来演示其用法。
该文件应使用 GitHub 风格的 markdown 标记。
请包含一个许可证文件,以便其他人知道他们可以和不能做什么使用你的代码。
有很多关于将包发布到 npm 仓库的指南。 基本概述可在 这里 找到。
自2020年4月起,Node-RED 流库
不再能够自动索引和更新发布在 npm 上的带有 node-red
关键字的节点。相反,必须手动提交请求。
要做到这一点,请确保满足所有打包请求。要将新节点添加到库中,请点击 库页面 顶部的 +
按钮,然后选择 ‘node’ 选项。
该按钮会带你到
添加节点页面。在这里,重复列出了要求,并描述将其添加到库的步骤。
要更新现有节点,你可以像新节点一样重新提交,或通过流库节点页面上的“请求刷新”链接请求刷新。此链接仅对已登录用户可见。
如果在那段时间后仍然没有出现,你可以在 Node-RED 论坛 或 Slack 寻求帮助。
版权所有 OpenJS Foundation 和 Node-RED 贡献者。保留所有权利。OpenJS Foundation 拥有并使用注册商标。有关 OpenJS Foundation 的商标列表,请参阅我们的 商标政策 和 商标列表。未在 OpenJS Foundation 商标列表 中列出的商标和徽标是其各自持有者的商标™或注册商标®。使用它们并不意味着与它们有任何关联或认可。
OpenJS Foundation | 使用条款 | 隐私政策 | OpenJS Foundation 章程 | 商标政策 | 商标列表 | Cookie 政策