ここのところ、JavaScriptを使って結構な量のコードを書くことが増えて、デバッグ用に使っている console.log や console.time などをリリース前に簡単に消去できないかと思っていました。
(最初から消すことを念頭において書いていけばいいのだが)
リリース前に .js は Optimize(最適化)を行いますが、requirejsなどの最適化ツール(r.js)を通せばやってくれるものだと思っていました。が、どうもツールによっては、やってくれないことがあって困った。
そこでまぁ、ちょっと考えたのですが、JavaScriptってネイティブなメソッドの上書き(あまり好ましくないが)が出来てしまうんですよね。
console.log そのものを、何も返さない関数のオブジェクトで上書きしてやればいいじゃないかと。
window.console = {}; window.console.log = function(i){return;}; window.console.time = function(i){return;}; window.console.timeEnd = function(i){return;};
このコードが実行されると、console.log や console.time は何も出力しない関数になります。
リリース時は、スクリプトの先頭に上記のコードを記述しておいてやれば、
コードからわざわざ console.log 等を消す作業は必要なくなります。
そんなわけで。
consle.log自体のコードは消したくないけど、console.logの表示は消したい。そんな要望にピッタリでした。さっそく使わせてもらいました(*'▽')
返信削除