npm から取得した Node-RED をカスタマイズして起動する(2)


何のため?

Node-RED を Heroku で動作させたかったのだが想定外の動作をしていました。
Node-RED で発生している事象を調査するための環境構築手順を整理した記録です。

セオリーから外れているかもしれませんので、間違っていたらコメントをお願いします。

0. 準備

前の記事で node-red-sample ディレクトリ配下に Node-RED のソースがある状態の環境を構築した。
本記事では、『2.2 カスタマイズ方法(2) : settings.js を userDir に入れておく』 の方法で進めていく。

準備としては、下記コマンドを入力したところから開始となります。

$ mkdir node-red-sample
$ cd node-red-sample
$ npm -y init
$ npm install node-red
$ mkdir data
$ cp ./node_modules/node-red/settings.js ./data/

Node-RED を起動するには下記コマンドを入力する。

$ node ./node_modules/node-red/red.js  --userDir ./data

1. npm で入手した Node-RED をローカル管理に変更

前述の通り、Node-RED のコアをデバッグしたいので、ソース管理内に保持する手順を実施する。

1.1. Node-RED をローカルフォルダに移動

改変を加える Node-RED ソースは local_packages ディレクトリに置いて作業を進める事にする。

$ mkdir local_packages
$ mv node_modules/node-red ./local_packages/
$ mv node_modules/@node-red ./local_packages/
# 念のため依存パッケージからnpmjsのnode-redを取り除く
$ npm uninstall node-red
$ rm package-lock.json

1.2. package.json を書き換え

local_packages フォルダのモジュール類を dependencies 記述する。

package.json
  "dependencies": {
    "node-red": "file:local_packages/node-red",
    "@node-red/nodes": "file:local_packages/@node-red/nodes",
    "@node-red/editor-api": "file:local_packages/@node-red/editor-api",
    "@node-red/editor-client": "file:local_packages/@node-red/editor-client",
    "@node-red/registry": "file:local_packages/@node-red/registry",
    "@node-red/runtime": "file:local_packages/@node-red/runtime",
    "@node-red/util": "file:local_packages/@node-red/util"
  }

1.3. 書き換えた package.json の内容を node_modules に反映させる

$ npm install

以上で、node_modules 配下には local_packages からのハードリンクが張られる。
Node-RED Core 実体は local_packages にあるものが利用される。

→ コメント追加するなりして、自由にデバッグが出来るので HAPPY !!!

まとめ

本手順で作ったソース一式を git で管理し、herokuで好きなようにデバッグ出来るようになった。

→ その後の調査でherokuとは関係なく発生する問題であることが判明した。

続く...