Laravel Mixというかwebpackでconsole.log()が消えないようにする

追記

Laravel Mixとwebpackのどっちが犯人なのか探ってたら、Laravel Mixが犯人であること、さらにじつはもうdrop_consoleがデフォルトで無効になっていることに気付いた。

Remove drop_console option · JeffreyWay/laravel-mix@a9d2646 · GitHub

ということでこの記事にはもうなんの意味もない……。

追記終わり。


Laravel Mixが使っているwebpackが使っているUglifyJSにはdrop_consoleというオプションがあり、これが有効だとconsole.log()が消される。

アホなオプションなのでUglifyJSではデフォルトは無効のようだが、Laravel Mixかwebpackか知らんがどちらかでデフォルトで有効になっている。

こんなものはバグの温床でしかないので無効化したい。

以前までは、

mix.options({
    uglify: {
        compress: {
            drop_console: false
        }
    }
});

で行けたけど、(多分)uglifyjs-webpack-pluginが1.0になるあたりの変更で仕様が変わって、

mix.options({
    uglifyOptions: {
        compress: {
            drop_console: false
        }
    }
});

にしないとエラーになるようになった。

なお以下のようなエラーが出てた。

ValidationError: UglifyJs Plugin Invalid Options

options['compress'] is an invalid additional property