このページの環境プロファイル・字句短縮・診断統一は、Storm Lua EngineのSDK統合ブランチに対応する実装の仕様です。既存の公開済みパッケージへ遡って適用されるものではありません。同じ版のSDKとStorm Minを使用してください。
Web 版で require を使ったプロジェクトを minify できますか
Web 版で require を使ったプロジェクトを minify できますか
できません。Web 版は単一ファイルの Lua コードのみに対応しています。複数モジュールをリンクする場合は CLI(
--entry/--modules-dir/--project)かライブラリ(compileProject)を使ってください。詳しくは require によるモジュール分割 を参照してください。_ENVを使ったコードは短縮の対象外ですか
_ENVを使ったコードは短縮の対象外ですか
対象外として意味の変わる出力を返すのではなく、現在はトークン・識別子・リテラル・行番号を維持する字句短縮へ切り替えます。
conservative-minification診断とsearch.mode: "lexical"が返ります。短縮率が低くても、そのままの意味を優先します。元のコードが実ゲームで正しく動くかは別途確認してください。"... is a standard Lua builtin but is not available in the Stormworks sandbox." というエラーが出ます
"... is a standard Lua builtin but is not available in the Stormworks sandbox." というエラーが出ます
pcall、error、print、setmetatable、os、io、coroutine など、標準 Lua には存在するが Stormworks のサンドボックスには存在しないグローバルを参照しています(sw-unavailable-global)。analyze()/lint では警告扱いですが、単一ソースとプロジェクトのminify/buildではエラーになります。debug.logは利用できます。該当箇所を Stormworks で利用可能な API に書き換えてください。利用可能なグローバルルートの一覧は 対応 Lua 構文と意味保存モデル を参照してください。"input."/"output." can only be referenced inside onTick() というエラーが出ます
"input."/"output." can only be referenced inside onTick() というエラーが出ます
input.*/output.* は onTick コールバックの本体(ネストした内側関数を含む)以外から参照できません。onTick の外で呼び出している箇所を、onTick 内から呼ばれる関数に移すか、onTick の中に直接記述してください。関数呼び出しを経由した間接的な参照は現時点では検出されないため、意図せず onTick の外から呼ばれる経路がないかも確認してください。"function(...) ... end" でパースエラーになります
"function(...) ... end" でパースエラーになります
引数リストが可変長引数のみ(
(...))の関数は、名前付き・無名を問わず現在のパーサではパースエラーになります(function f(...) end などは expected expression at <行>:<列>, got )、文としての function(...) end は expected (, got ... at <行>:<列>)。function f(a, ...) end のように名前付き引数を 1 つ以上前置してください。CLI でプロジェクトの lint だけを行いたい
CLI でプロジェクトの lint だけを行いたい
stormmin lint を使います。minify は行わず静的解析だけを実行します。プロジェクトモードが必須です。出力文字数をちょうど 8192 文字以下にしたいだけです。最小化に時間をかけたくありません
出力文字数をちょうど 8192 文字以下にしたいだけです。最小化に時間をかけたくありません
targetSize オプション(CLI では --options '{"targetSize":8192}'、Web 版では「目標文字数」欄)を使ってください。目標サイズ以下の候補が得られた時点で探索を打ち切るため、最小化に比べて短時間で結果が得られます。詳しくは 目標サイズ探索 (OBJ-2) を参照してください。--optionsに存在しないpass IDを指定するとどうなりますか
--optionsに存在しないpass IDを指定するとどうなりますか
未知・廃止済みのpass IDは
unknown-optimization-passとして拒否します。falseを指定しても同じです。環境とホスト拡張の組み合わせが不正な場合はinvalid-environmentになります。他の任意JSONキーまで同じ検証がある、という意味ではありません。native バイナリではなく WASM フォールバックで動いているようです
native バイナリではなく WASM フォールバックで動いているようです
npm パッケージの CLI は、実行環境に対応する native バイナリ(
linux-x64 / win32-x64 / darwin-arm64 / darwin-x64)が同梱されていればそれを使い、無ければ Node 向け WASM 実装に自動でフォールバックします。ただしフォールバック側は単一ファイルの minify のみに対応しており、compile/lint サブコマンドやプロジェクトモードのフラグを渡すと unknown option エラーになります。特定プラットフォーム向けの native バイナリ単体が必要な場合は、GitHub Release から stormmin-vX.Y.Z-<target>.tar.gz(Windows は .zip)形式のアーカイブを取得してください。なお npx で実行する場合はパッケージ名を明示して npx @stormcat-works/stormmin ... としてください。出力コードはそのまま使えますか
出力コードはそのまま使えますか
StormMin は Web 版・CLI・ライブラリのすべてが β 版 (バージョン 1.0 未満) です。Web 版の画面には常に「β版につき、出力コードにコンパイラ起因のバグが含まれる可能性があります。ゲーム内で必ず動作確認してください。」という警告が表示されます。CLI やライブラリで minify した場合も同じです。minify 後のコードは、ビークルに反映する前に必ずゲーム内で動作確認してください。