アセットパイプラインで、JavaScriptの圧縮にTerserを利用するとき、次のように設定しているケースが多いかと思います。
config/environments/production.rb
config.assets.js_compressor = :terser
通常、この設定で問題はないのですが、
本番リリース時は、console.logも合わせて消したい! となると、非常に残念なお知らせとなります。
この設定ですと、JavaScriptに書かれた"コメント"は消えるのですが、console.logはそのままソースコードに残ってしまうためです。
そこで、Terserにオプションを渡してあげて、挙動を調整していきます。
console.logを消すための設定
JavaScript圧縮時、console.logを含む「console.*」系も全て消したい場合
config.assets.js_compressor = Terser.new(compress: { drop_console: true })
一方、console.debugだけ消したいケースもあるかと思います。
その場合は「pure_funcs」で個別に指定する事で可能となります。
config.assets.js_compressor = Terser.new(compress: { pure_funcs: ['console.debug'] })
複数指定したい場合は、カンマ区切りで追加することで可能となります。
config.assets.js_compressor = Terser.new(compress: { pure_funcs: ['console.debug','console.info'] })
もっとできる事を探す
Terserには、他にも多くのオプションが用意されています。
詳しくは、READMEやAPIリファレンスをご覧ください。
Terser(gem) リポジトリ
APIリファレンス