4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Node-RED]複数のカスタマイズノードを1つのモジュールにパッケージ化

Last updated at Posted at 2019-05-23

概要

 複数のカスタマイズノードを、別の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です。
後の項目はお好みで設定してください。

image.png

実行後、node-red-contrib-my-nodeフォルダ下にpackage.jsonファイルが生成されます。

3.package.jsonの編集

生成された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が出ていますが、動作に影響ない範囲なのでそのまま進みます。

image.png

その後、カレントディレクトリをC:\Users\ユーザ名\.node-redに移し、
コマンドnpm link node-red-contrib-my-nodeを実行します。

6.Node-REDを起動してパレットに追加されていることを確認

ブラウザでNode-REDエディタ画面を開くと、次のようにカスタマイズノードが追加されています。

image.png

参考

Node-RED 日本ユーザ会
https://nodered.jp/docs/creating-nodes/packaging

おわりに

 javascript初心者なので用語や使い方等間違いがあるかもしれません。
気になった点などアドバイスいただけると幸いです。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?