概要
複数のカスタマイズノードを、別のNode-RED環境にローカルに渡して使いたいことがありました。
その際各ノードごとにリンクするのが面倒なので、1つのモジュールにパッケージ化した備忘録です。
今回は最低限の設定をしていますので、用途に応じてpackage.jsonを編集してください。
筆者はJavaScript初心者です🔰
環境
・OS:Windows10 64bit版
・コマンド実行環境:PowerShell
・Node-RED バージョン: v0.19.6
・Node.js バージョン: v11.10.1
準備
今回説明しているディレクトリ構成は次の通りです。
D:
- practice
- node-red-contrib-my-node パッケージ化するフォルダ
- node-red-contrib-node1 カスタマイズノード1
- node-red-contrib-node2 カスタマイズノード2
- node-red-contrib-node3 カスタマイズノード3
パッケージ化手順
1.カレントディレクトリをnode-red-contrib-my-node
にする
PowerShellを起動し、カレントディレクトリを移します。
2.コマンドnpm init
を実行
package.jsonを生成するためにnpm init
を実行します。
最初の設定package name
をパッケージ化後のモジュール名にします。
今回はnode-red-contrib-my-nodeです。
後の項目はお好みで設定してください。
実行後、node-red-contrib-my-nodeフォルダ下にpackage.json
ファイルが生成されます。
3.package.jsonの編集
生成されたpackage.json
を開くと次のようになっています。
{
"name": "node-red-contrib-my-node",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
ここに次のようなnodes
オブジェクトを追記します。
このオブジェクトのメンバを、カスタマイズノードのランタイムで実行される処理を記述したjsファイルとします。
"node-red": {
"nodes": {
"node1": "node1.js",
"node2": "node2.js",
"node3": "node3.js"
}
},
追記すると次のようになります。
{
"name": "node-red-contrib-my-node",
"version": "1.0.0",
"description": "",
"node-red": {
"nodes": {
"node1": "node1.js",
"node2": "node2.js",
"node3": "node3.js"
}
},
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
4.各ノードのhtmlファイルとjsファイルをパッケージ化するファルダに配置
配置後のディレクトリ構成は次のようになります。
D:
- practice
- node-red-contrib-my-node
- node1.html
- node1.js
- node2.html
- node2.js
- node3.html
- node3.js
- node-red-contrib-node1
- node-red-contrib-node2
- node-red-contrib-node3
5.パッケージ化したモジュールを、パレットに追加
カレントディレクトリをD:\practice\node-red-contrib-my-node
に移し、
コマンドnpm link
を実行します。
warningが出ていますが、動作に影響ない範囲なのでそのまま進みます。
その後、カレントディレクトリをC:\Users\ユーザ名\.node-red
に移し、
コマンドnpm link node-red-contrib-my-node
を実行します。
6.Node-REDを起動してパレットに追加されていることを確認
ブラウザでNode-REDエディタ画面を開くと、次のようにカスタマイズノードが追加されています。
参考
Node-RED 日本ユーザ会
https://nodered.jp/docs/creating-nodes/packaging
おわりに
javascript初心者なので用語や使い方等間違いがあるかもしれません。
気になった点などアドバイスいただけると幸いです。