stormmin は compile(既定)と lint の 2 つのサブコマンドを持ちます。サブコマンドを省略すると compile として扱われるため、stormmin input.lua と stormmin compile input.lua は同じ意味です。
npm パッケージの CLI は、実行環境に対応する native バイナリ(
linux-x64 / win32-x64 / darwin-arm64 / darwin-x64)が同梱されていればそれを呼び出し、無ければ Node 向け WASM 実装にフォールバックします。GitHub Release から取得した native バイナリ単体を直接実行することもできます。単一ファイルの minify
compile の既定の動作(プロジェクトモード関連フラグを指定しない場合)は、単一ファイルの minify です。
- 入力は positional 引数のファイルパス、または
-/省略時は標準入力から読み込みます。 - 出力は
-o/--outputを指定するとファイルへ、指定しなければ標準出力へ書き込まれます。 --jsonを付けると、圧縮後コードの文字列ではなく、サイズ・削減量・pass 実行結果・診断情報などを含む結果オブジェクト全体を JSON で出力します(フィールドの詳細は ライブラリ API リファレンス のCompileResultを参照)。
オプションの指定
コンパイルオプションは JSON で渡します。インライン指定とファイル指定のどちらか一方だけを使えます。stormmin が認識しないキー(存在しないオプション名や不明な pass ID)は、無視されるだけでエラーにはなりません。オプションが実際に適用されたかどうかは --json の出力で確認してください。指定できるオプションの一覧は ライブラリ API リファレンス を参照してください。
複数モジュールのプロジェクトを minify する
require で分割した複数ファイルをリンクして 1 つの Lua にまとめるには、次のいずれかでプロジェクトモードを有効にします。単一ファイル入力(positional 引数)とは同時に指定できません。
--modules-dirはディレクトリを再帰的に走査し、*.luaファイルを集めます。--entryと併用が必須です。--projectはLuaProject形式の JSON ファイル(entry/modules/ 任意のambient)を直接読み込みます。--entry/--modules-dirとは同時に指定できません。- モジュール分割の詳しいルールと制約は require によるモジュール分割 を参照してください。
--map は --no-minify と併用する場合のみ指定できます。
lint(解析のみ)
lint サブコマンドは minify を行わず、静的解析だけを実行します。プロジェクトモードが必須で、単一ファイルの lint はサポートされていません。
--formatはtext(既定)またはjsonを指定できます。それ以外の値を渡すとエラーになります。--jsonフラグはlintでは無視されます。JSON 出力が欲しい場合は--format jsonを使ってください。lintの解析オプションはdisabledRules(抑制する診断コードの配列)のみです。severity: errorの診断はdisabledRulesでは抑制できません。
serve(デモ UI をローカル配信)
serve は npm パッケージの stormmin コマンド専用のサブコマンドで、パッケージに同梱された Web 版と同じ UI をローカルで静的配信します。native バイナリ単体にはこのサブコマンドはありません。
- ポートの既定値は
8787です。--port/-pで指定するか、環境変数PORTで変えられます(--portが優先)。 - 待ち受けホストの既定値は
127.0.0.1で、環境変数HOSTで変えられます。 - 起動すると
StormMin Web: http://<host>:<port>を表示し、そのまま常駐します。
終了コード
stormmin -V/--version は stormmin <バージョン> の形式でバージョン文字列を出力します。