Node-REDのノードを公開すると情報が足りないなどでフローライブラリのページ( https://flows.nodered.org/ )でアラートがよく出ます。
昔はなかったので昔公開してそのままのものは色々と警告が出てそうです。
こちらのライブラリの更新に伴い各種対応をしてみました。
ミニマムのサポートNode-REDとNode.jsのバージョンの指定
Node-REDとNode.jsのバージョン指定を書いてないのでPackege.jsonに書きましょうといったアラートです。
どこのバージョンで対応しているのか?を調べるのは結構大変ですが後方互換を気にしなければ実装時の環境でも良いと思います。
Node.jsバージョン
Fetchなどを使ってるけどそれ以外特殊なことはやってないので18以上を指定しておきました。
"engines": {
"node": ">=18"
},
これはよくある指定。
Node-REDバージョン
"node-red"というキーの中にバージョンを書くらしいですね。
ノードのパスを指定する使い方でしか使ってなかったです。
{
...省略
"node-red": {
"version": ">=3.1.0", //←追加
"nodes": {
"Webhook": "./nodes/webhook/webhook.js",
"ReplyMessage_New": "./nodes/_new/reply/reply.js",
"PushMessage_New": "./nodes/_new/push/push.js",
"BloadcastMessage": "./nodes/bloadcast/bloadcast.js",
...省略
}
}
...省略
}
正直Node-REDのv3で動くかあんまり分かってないです。
この辺みつつ一旦対応としておきました。Node-RED 3.1系はNode.js 16以降っぽいですね。
関係ないけどNode-RED 5.0ではNode.js v24系から対応っぽいですね。
依存モジュールの最新化 - Dependencies use latest versions
中で利用しているnpmライブラリのバージョンを最新化しましょうねっていうアラートです。
"dependencies": {
"@line/bot-sdk": "^10.5.0",
"body-parser": "^1.19.1",
"cors": "^2.8.5"
}
"dependencies": {
"@line/bot-sdk": "~10.5.0",
"body-parser": "~1.19.1",
"cors": "~2.8.5"
}
などで書いてましたが、body-parserは2系が最新なのでここが警告出ていたポイントです。
"dependencies": {
"@line/bot-sdk": "^10.5.0",
"body-parser": "^2.2.1",
"cors": "^2.8.5"
}
ちなみに~と^の違いかと思ったけどそういうことでもない模様です。
単純に最新化することでバグが起きちゃったりする場合は最新化を無理にする必要はなさそうですが、README.mdにその理由を明記せよとあるので理由を書けばOKとも取れます。
一応最新化しつつ、以下のような文章をREADME.mdにも書いておきました。
## Dependency versions
This node restricts some dependencies to a specific major version
because newer major versions may introduce breaking changes.
Node-REDという単語をキーワードに入れておく
これは過去に対応していて今回大丈夫でしたがpackage.jsonのキーワードにnode-redと入れておかないと警告がでます。
{
省略
"keywords": [
"node-red",
"LINE",
"bot",
"messaging",
"webhook",
"api",
"i18n"
],
省略
}
Exsampleの用意
サンプルを入れましょうという警告っぽいです。
言ってることは確かにだけどちょっと面倒...苦笑
ここが手間が大きい気がして最後に残してました... サンプルが欲しいという。
Examples
Requirements
The package SHOULD include example flows that demonstrate each node. The tool will check the examples folder (and any nested folders) for json flow files. It will then iterate over these files and look at the nodes used in the flows to ensure that all nodes declared in the package are used in an example at least once. Config nodes are excluded from the check.
Reason
Examples are an excellent way for users to understand how to use a node.
Reference
https://nodered.org/docs/creating-nodes/examples
Node-REDの公式サイトにあるパッケージングのやり方を見るとexamplesフォルダが欲しい模様
(サンプルってフォルダが間際わしいですね...)
https://nodered.org/docs/creating-nodes/examples
https://nodered.org/docs/creating-nodes/packaging
├── LICENSE
├── README.md
├── package.json
├── examples
│ ├── example-1.json
│ └── example-2.json
└── sample
├── icons
│ └── my-icon.svg
├── sample.html
└── sample.js
Node-RED のツールは次を機械的に以下を確認する模様です。
-
1.examples/ フォルダが存在するか -
2.その中に .json のフローファイルがあるか -
3.そのフロー内で- • package.json の node-red.nodes に定義された 各ノードが最低1回使われているか
-
4.※ Config node は除外(チェック対象外)
examplesフォルダを作ってフローの例を入れつつ、configノード以外の全てを入れ込む必要があるて感じですね。
exampleフォルダじゃなくてexsamplesという複数形なので注意しましょう。
僕はここのフォルダ名をミスってずっと反映されなかったですorz
ノードごとに一つずつサンプルフローを作る必要はなく、まとめたサンプルで大丈夫です。
ということで色々あつめたサンプルを作成してJSONとしてexamplesフォルダに設置して対応しました。
無事にオールグリーンに
なりました。
こちらのライブラリの更新に伴い各種対応をしてみました。
ただこれによって後方互換が消えた可能性もあるので何か不具合あったら戻すと思います。
後方互換もいつまで対応するか問題あったので一旦このタイミングで思い切るのも良さそうですね。









