サブフローをnpmモジュールとしてパッケージ化し、他のノードと同じ様に配布できます。
インストールすると、通常のノードとしてパレットに表示されます。ユーザは、サブフローの内部のフローを参照したり、編集したりすることはできなくなっています。
現段階は、サブフローモジュールの作成は、サブフローのJSONを手動で編集する作業になっています。将来的には、これを自動化するツールを提供する予定ですが、この手順は着手するための手助けになるはずです。
どんなサブフローもモジュールとしてパッケージ化できます。それを行う前に、どの様に使われるかを考える必要があります。以下のチェックリストは、考慮すべき点を気づくために役立つでしょう:
サブフローは、パッケージ化されるモジュールを定義するための、追加のメタデータを持つことができます。
サブフロープロパティの編集ダイアログにて、以下のプロパティを設定できます:
モジュール
- npmパッケージ名ノードの型
- デフォルトでは、サブフローのid
プロパティが使われます。より適切な型を指定すると良いでしょう。通常のノードの型と同様に、他のノードとの競合を避けるために、一意である必要があります。バージョン
説明
ライセンス
作者
キーワード
この手順は、Node-REDの外部で行う手動の作業です。
モジュールに付ける名前でディレクトリを作成します。この例では node-red-example-subflow
を使用します。
mkdir node-red-example-subflow cd node-red-example-subflow
package.json
ファイルを作成するために npm init
を使用します:
npm init
ここで、一連の質問を聞かれます。サブフローのメタデータに追加する値を回答してください。
README.md
ファイルを追加します。優れたモジュールは全て、READMEが必要です。
モジュールのJavaScriptラッパーを作成します。この例では 以下の example.js
を使用します:
const fs = require("fs");
const path = require("path");
module.exports = function(RED) {
const subflowFile = path.join(__dirname,"subflow.json");
const subflowContents = fs.readFileSync(subflowFile);
const subflowJSON = JSON.parse(subflowContents);
RED.nodes.registerSubflow(subflowJSON);
}
この例では、すぐに作成できる subflow.json
というファイルの内容を読み込んでいます。そして、パースした後、RED.nodes.registerSubflow
関数に渡しています。
所定の場所に全てのファイルを置いた後、モジュールにサブフローを追加できるようになります。ここでは、サブフローのJSONを注意して編集する必要があります。
Ctrl-E
または メニュー->書き出し
)、JSONをテキストエディタへ貼り付けます。書き出しダイアログのJSONタブにおいて ‘インデント付きのJSONフォーマット’ オプションを選択しておくと、次のステップがより容易になるでしょう。このJSONは、ノードのオブジェクトから成る配列として構造化されています。後ろから2つ目のエントリは、サブフローの定義です。また、最後のエントリは、ワークスペースに追加したサブフローのインスタンスです。
[
{ "id": "ノード1", ... },
{ "id": "ノード2", ... },
...
{ "id": "ノードn", ... },
{ "id": "サブフロー定義ノード", ... },
{ "id": "サブフローのインスタンスノード", ... }
]
[
の直後)へ移動"flow"
という新規プロパティを作成し、残りのノードの配列をその中へ移動subflow.json
というファイル名で保存{
"id": "サブフロー定義ノード",
...
"flow": [
{ "id": "ノード1", ... },
{ "id": "ノード2", ... },
...
{ "id": "ノードn", ... }
]
}
最後のタスクは、Node-REDがモジュールの内容を認識できるように package.json
を更新することです。
.js
ファイルのエントリを持つ "nodes"
セクションを含む "node-red"
セクションを追加します:
{
"name": "node-red-example-subflow",
...
"node-red": {
"nodes": {
"example-node": "example.js"
}
}
}
サブフローが標準以外のノードを使用する場合は package.json
ファイルに依存関係として列挙する必要があります。これによって、モジュールと合わせてインストールされるようになります。
モジュールは、標準のトップレベルの "dependencies"
セクションと、"node-red"
セクション内の "dependencies"
セクションの 両方に 列挙します。
{
"name": "node-red-example-subflow",
...
"node-red": {
"nodes": {
"example-node": "example.js"
},
"dependencies": [
"node-red-node-random"
]
},
"dependencies": {
"node-red-node-random": "1.2.3"
}
}
Node-RED: Low-code programming for event-driven applications.
Copyright OpenJS Foundation and Node-RED contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
The OpenJS Foundation | Terms of Use | Privacy Policy | OpenJS Foundation Bylaws | Trademark Policy | Trademark List | Cookie Policy