deepblue-will’s diary

JS、CSS,Ruby、Railsなど仕事や趣味で試した技術系のことを書いていきます。

Angular CLIでPostCSSを使えるようにする

Angular CLIではPostCSSをサポートしてないので力技でどうにかしたという話です。(Angular CLI 7.2.2で動作確認してます)

方法

postinstall でAngular CLIの内部にあるwebpackのconfigを書き換えるという力技でどうにかします。 以下のスクリプトpostinstall で実行すれば任意のPostCSSのプラグインを差し込んでビルドできます。

解説

方法としてはng-cli-pug-loader を参考にしました。

Angular CLIはPostCSSのなかでも autoprefixer には対応してるので内部でPostCSSのloaderは使用されてます。なので、そのPostCSSのloader設定に追記してしまうというのが今回の方法です。

具体的にはここです。

https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts#L79

このあたりに使いたいPostCSSのPluginを差し込めば、Angular CLIでビルドできるようになるわけです。

最後に

他には @angular-builders/custom-webpack を使ってwebpack設定ファイルを上書きするという方法もあったのですが、せっかくビルドをすべてAngularCLIに任すことができるのに、ここで外部ライブラリ使ってwebpack設定を書いてしまったらAngular側で破壊的な変更があったときにライブラリ側がサポートしてくれないとどうにもならなくなるので、それはできるだけ避けたいなーと思ってました。かといって ng eject でwepack 設定すべて吐き出すのも同じ理由で嫌だったので、今回はこのような方法で対応してみました。

これであれば、Angular側で破壊的な変更があってもスクリプト修正すればなんとかなります。

もしAngularでPostCSSを使いたい方は参考にしてみてください。