クライアント側の JavaScript で例外が発生したときに、行番号が役立つようにしたいと考えています。理想的には、ASI (Automatic Semicolon Insertion) ルールを理解するソリューション、つまり、構文を認識し、RegExp/テキスト ベースではないソリューションです。
私が見つけた最も近いものは、セミコロン オプションが false に設定された UglifyJS2 です。[編集: UglifyJS2 は、最大行長オプションを低い値に設定する必要もあり、おそらくシーケンス オプションのチェックを外す必要があります。そうしないと、1000 文字の長さなどの長い行が生成されます]。
PS: ビルド プロセスには Windows を使用する必要があり (さまざまな理由でロックインされています)、ビルド スクリプトは既に Python と Java に依存しています (JS のクロージャ コンパイラ、CSS の yuicompressor、CSS に画像を埋め込むための cssembed)。別のビルド プロセスの依存関係 (Node、Ruby、または Web サービスなど) を追加したくありません。テキスト処理は信頼性の高い運用ソリューションには脆弱すぎると思うため、RegExp ソリューションの使用を強く嫌っています。
PPS: ソースマップは非常に複雑であるため、依存したくありません (クロスブラウザーの問題、内部およびクライアントのサポートの問題、正しいソースマップの管理と検索の難しさ)。
PPPS: 行番号の新しい要件の理由は、https://github.com/getsentry/raven-jsの使用を開始しているためであり、例外の行番号が役立つ場合に最も役立ちます。クライアント側のコードは、単一ページの Ajax/json アプリです。理論的には、セミコロンの代わりに改行を使用しても、gzip のサイズはほとんど変わりません。