目次
ひさびさにwebpackの設定を書いたらバージョンが4になっていて色々と変わっていた
ここのところNuxt.jsを使って制作することが多かったのでwebpackを使ってどのパッケージを使ってTypeScriptやScssをトランスパイルして圧縮するかとか考えて設定する機会がなかった。
webpackでCSSをCSSのまま使うためにはこれまで extract-text-webpack-plugin
をインストールしてたんだけどこれがwebpack@4になって非推奨なったんですね。 extract-text-webpack-plugin@beta
でもうまく動きません。。。
terser-webpack-pluginを使って圧縮(Minify)をする
GitHubの説明ではJavaScriptのみの言及になっていますが、後で説明する optimize-css-assets-webpack-plugin
の引数に terser-webpack-plugin
を渡してCSSの圧縮でも利用します。
おそらく以前はUglifyJSを使うことが一般的で過去の自分のwebpackの記述をみても以下のように書いてあったのですがES2015(ES6)の構文があるとエラーになります。
1 | plugins: [ |
mini-css-extract-pluginを使ってJavaScriptから別ファイルとしてCSSを切り出す
GitHub: mini-css-extract-plugin
webpackを使って素直にCSSを扱うとJavaScriptとして同じファイルとして扱ったりするんだけど、まあそれだといろいろと不都合があったりするので切り出してCSSファイルとして別にしたくなる。
そういう場合は今まで extract-text-webpack-plugin
を使ってたんだけどこれからは mini-css-extract-plugin
を使ってねということと理解。
optimize-css-assets-webpack-pluginはCSSを最適化して圧縮(minimize)する
古いwebpackの記述を探すと extract-text-webpack-plugin
使ってて以下な感じでminimizeしてたんですが今はうまく動きません。
1 | module: { |
こんな記述にしていました
entryとなるディレクトリとoutputするディレクトリは環境にあわせて書き換える必要がありますがこんな感じで書いておくと汎用的に使えるんじゃないかと思います。
オプションがいろいろ設定できて進化を感じます。
1 | const path = require('path'); |
ちなみにpackage.jsonは以下な感じです。
autoprefixerはwebpack.config.jsにもこちらにも記述があって二重管理なのであれな感じになってますね。
1 | { |