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
こちらで実行してインストール。
結果としてインストールされたので node_modules のフォルダが登場しました。
動かしてみる
npm run node-red
コマンドを実行しました。中身は、先ほど設定した ./node_modules/.bin/node-red -p 18801 -u ./node-red_dir -s ./node-red_dir/settings.js
を実行しています。
ということで起動ログが走って http://127.0.0.1:18801/
で無事起動しました。Node-RED バージョンも今の最新の v2.0.5 でインストールされて、このフォルダにインストールしたバージョンで実行されています。
これで、いい具合に、フォルダ内に入れ込めました!