Node-RED をあるローカルのフォルダだけで動くようにプロジェクトを作るメモ

Node-RED をあるローカルのフォルダだけで動くようにプロジェクトを作るメモです。

やりたいこと

基本的には、こちらの調整となります。

Node-RED を別ポート・別フローで個別実行する処理を package.json の npm run コマンドでまとめたメモ

すでに、この仕組みで node-red コマンドを実行する以外は、設定フォルダや設定ファイルも直下のフォルダに設定できています。

今回は例えば Node-RED の最新版やベータ版など手元にグローバルインストールされているバージョン以外も試したいときなどに、特定の Node-RED バージョンを動かしたいようなシチュエーションであったり、ローカルのあるフォルダに全ての開発挙動を封じ込めて対応したい時などに使いやすいようにします。

package.json の scripts を修正します

最初に作る package.json を以前の設定 から修正します。

“node-red”: “node-red -p 18801 -u ./node-red_dir -s ./node-red_dir/settings.js”,

を、

“node-red”: “./node_modules/.bin/node-red -p 18801 -u ./node-red_dir -s ./node-red_dir/settings.js”,

に変更して、内部にインストールした Node-RED から実行するようにします。

{
  "name": "sample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "node-red": "./node_modules/.bin/node-red -p 18801 -u ./node-red_dir -s ./node-red_dir/settings.js",
    "init":"npm run init:mkdir && npm run init:get-settings.js",
    "init:mkdir":"node -e \"console.log('[START] mkdir-node-red_dir');const fs = require('fs');const path_nodered_dir = './node-red_dir';if (fs.existsSync(path_nodered_dir)) {console.log( '[ALERT] ' + path_nodered_dir + ' has existed!');} else {console.log('[OK] mkdir -> ' + path_nodered_dir );fs.mkdirSync(path_nodered_dir);}\"",
    "init:get-settings.js": "node -e \"const url = 'https://raw.githubusercontent.com/node-red/node-red/master/packages/node_modules/node-red/settings.js';const stream_output_path = './node-red_dir/settings.js';if (fs.existsSync(stream_output_path)) {console.log( '[ALERT] ' + stream_output_path + ' has existed!');} else {console.log('[START] download settings.js ...');const https = require('https');const fs = require('fs');const stream = fs.createWriteStream(stream_output_path);https.get(url, function(res){res.pipe(stream);res.on('end', function () {stream.close();console.log('[OK] got settings.js! -> ' + stream_output_path);});});}\""
  },
  "keywords": [],
  "author": "",
  "license": "MIT"
}

こちらを配置して、

npm run init

で初期設定をします。

開発するフォルダ直下で Node-RED をインストール

つづいて、開発するフォルダ直下で Node-RED をインストールします。

npm i node-red

こちらで実行してインストール。

image

結果としてインストールされたので node_modules のフォルダが登場しました。

動かしてみる

npm run node-red

コマンドを実行しました。中身は、先ほど設定した ./node_modules/.bin/node-red -p 18801 -u ./node-red_dir -s ./node-red_dir/settings.js を実行しています。

image

ということで起動ログが走って http://127.0.0.1:18801/ で無事起動しました。Node-RED バージョンも今の最新の v2.0.5 でインストールされて、このフォルダにインストールしたバージョンで実行されています。

これで、いい具合に、フォルダ内に入れ込めました!