Node-RED の設定ファイル分析で settings.js のためのコメント除去抽出できる grep メモ

Node-RED の設定ファイル分析で settings.js のためのコメント除去抽出できる grep メモ

Node-RED の設定ファイル分析で settings.js のためのコメント除去抽出できる grep メモです。

背景

最近は Node-RED での開発をコーディングエージェントと一緒に進めることも多いのですが、そのなかでも、設定ファイル settings.js をディスカッションすることもあります。

node-red/packages/node_modules/node-red/settings.js at master · node-red/node-red

設定ファイルについてはここに詳しく書かれています。

ただ、問題なのが、編集時はコメントがあったほうが分かりやすくていいんですけど、実際に必要な設定だけ抜きだしたり確認したりするときがちょっと不便。コーディングエージェントと会話してても伝わりにくいんです。まあ人間も大変なものは AI も大変。

grep でうまくコメント除去して確認しやすくなった

AI にも聞きながらですが、Linux / macOS / Raspberry Pi であれば grep でこんな感じでコメント除去して確認しやすくなりました。

# コメント行を除外して有効な設定のみ抽出
grep -v '^\s*\(//\|/\*\|\*\)' ~/.node-red/settings.js | grep -v '^\s*$'

Windows でも Git Bash 経由で使うのがシンプルかなと。PowerShell で同様に頑張るのはちょっと大変でした。

コマンドとしては、単一行コメントは // 、ブロックコメント開始は /\* 、ブロックコメント中間行 \* 、空行 ^\s*$ が除去されます。

実際に動かしてみる

先ほどの settings/js 例であれば、

module.exports = {
    flowFile: 'flows.json',
    flowFilePretty: true,
    uiPort: process.env.PORT || 1880,
    diagnostics: {
        enabled: true,
        ui: true,
    },
    runtimeState: {
        enabled: false,
        ui: false,
    },
    telemetry: {
    },
    logging: {
        console: {
            level: "info",
            metrics: false,
            audit: false
        }
    },
    exportGlobalContextKeys: false,
    externalModules: {
    },
    editorTheme: {
        palette: {
        },
        projects: {
            enabled: false,
            workflow: {
                mode: "manual"
            }
        },
        codeEditor: {
            lib: "monaco",
            options: {
            }
        },
        ...
    },
    functionExternalModules: true,
    globalFunctionTimeout: 0,
    functionTimeout: 0,
    functionGlobalContext: {
    },
    debugMaxLength: 1000,
    mqttReconnectTime: 15000,
    serialReconnectTime: 15000,
}

のようにできて、かなり見やすい!人間にも AI にも伝わりやすい!

AI に丁寧に正規表現の挙動を壁打ちしつつ、ときには優しく教えてもらい、この知見にたどり着けました!