bundle size調べてみた
2022/10/11
当サイトで使用しているgatsbyのversionをv4へ上げたついでに、サイトのbundle sizeなども調べてみました。
bundle anlyzeはwebpack-bundle-analyzerが有名ですが、各フロントエンドのwebpackを直接いじることはあまりしないので、各フレームワークに応じたbundle analyze用のプラグインを使用するのが一般的な方法みたいです。
各Reactのフレームワークに応じたbundle analyze方法を紹介した後、当サイトの結果も例として紹介したいと思います。
bundle analyze方法
以下、方法をまとめます(いずれも簡単です)。
create-react-app
create-react-app
でwebpack-bundle-analyzer
を使用したい場合は、cra-bundle-analyzerを使うのが良さそうです。
cra-bundle-analyzer
はcreate-react-app
用にwebpack-bundle-analyzer
を調整した解析ライブラリで、インストール後、npx
コマンドで実行してあげるとbundle analyze
結果がbrowserで自動的に表示されます。
$ yarn add -D cra-bundle-analyzer
$ npx cra-bundle-analyzer
Next.js
Next.js
にはwebpack-bundle-analyzer
をNext.js
用に拡張した@next/bundle-analyzerという公式プラグインがあるのでそれを使います。
$ yarn add -D @next/bundle-analyzer
インストール後、next.config.js
を以下のように編集します。
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
module.exports = withBundleAnalyzer({});
その後はyarn build
の前にANALYZE=true
をつけるとbuild後にanalyze結果を表示してくれるようになります。
$ ANALYZE=true yarn build
Gatsby.js
Gatsby.js
にも専用のプラグインがあるのでそれをinstallします。
$ yarn add -D gatsby-plugin-webpack-bundle-analyser-v2
install後、gatsby-config.js
にpluginを追記します。
module.exports = {
plugins: [
'gatsby-plugin-webpack-bundle-analyser-v2'
]
}
あとはgatsby build
すると自動的にbrowserが開き、bundle analyzerの結果が表示されます。
当サイトの結果
以下、当サイト(Gatsby.js
)の結果です。
lighthouseでのperformance結果は悪くないのである程度予想はできてましたが、そこまで大きいsizeのものはなさそうでした(gzipedサイズでtotal 210.67KB
)。
強いて目立つものを挙げるとReact
, polyfill.js
, recoil
などでしょうか。
Reactは対応できないので放置として、recoil
などはすぐに対応できそうです(気が向いたらやるかも)。
polyfill.js
は...小さくできるんでしょうか?
Gatsby
に組み込まれているものなので難しいかもしれません🥲
こんな感じで簡単にbundleの解析ができるので、たまにチェックしてみると面白いかもしれません。