結論
UglifyJS2
の drop_console
オプション付き実行で可能。
やりたいこと
javascript
ファイル中にある、開発用のconsole.log
その他のconsole出力をリリース版では抑制したい。
課題
- 手動でconsoleを削除、はやらない
- 目的のためにconsoleのラッパーを書いたり、JavaScriptライブラリを使わない
- 手間/依存関係を増やさない
方法
javascript向けのMinifierでconsole関連を削除する機能があるはず、と思って探したらCLIのMinifier
ツールである UglifyJS2 に目的の機能があった。
実行時の drop_console
オプション(defaultはfalse
)を有効にすることでconsole関連が削除される。
コマンド
uglifyjs <input js file> --compress drop_console=true --mangle -o <js.min file>
実行例
console.js
const message = "hogehoge";
console.log(message);
console.info("info");
console.warn("warn");
alert(message);
console.error("error");
↑に対して drop_console
オプションを有効にして上述のコマンドを実行する。
uglifyjs console.js --compress drop_console=true --mangle -o console.min.js
WARN: Dropping side-effect-free statement [console.js:2,0]
WARN: Dropping side-effect-free statement [console.js:3,0]
WARN: Dropping side-effect-free statement [console.js:4,0]
WARN: Dropping side-effect-free statement [console.js:6,0]
const message="hogehoge";alert(message);
出力の console.min.js
は以下のようなる。
console.min.js
const message="hogehoge";alert(message);
期待通りconsole関連が削除されている。