Vue.jsのプロジェクトをビルドしたときに時間がかかりすぎて困っていました。
というか、ビルド&デプロイ時に以下のような警告メッセージが出ていて、どうにかならんかとは思っていたものの後回しにしていたんですが、あるとき「普通に考えてこのプロジェクトで重くなる要素Vuetifyしかなくね…?」と思って調べていたらあっさり解決したので共有です。
警告メッセージ
どうにかならんかと思っていた警告は以下です。
「ビルド後の1ファイルがでけぇから何か対策打った方がいいぞ」って言われてますね。
[nuxi] ℹ Building for Nitro preset: heroku ℹ Building client... WARN (!) Some chunks are larger than 500 kB after minification. Consider: - Using dynamic import() to code-split the application - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit. ✔ Client built in 215169ms ℹ Building server... ✔ Server built in 499300ms [nitro] ✔ Generated public .output/public
環境
私のVue環境はこんな感じです。Nuxtを使用してます。
- vue: ^3.5.13
- nuxt: ^3.15.0
- vuetify: ^3.8.3
- vite-plugin-vuetify: ^2.1.1
上記の警告で分かる通りheroku上で動かしてます。
まぁ、ローカル環境でも同じ事象が発生するので不要な情報でしょうか。
原因
先述の通り、原因はVuetifyの設定方法です。
vite-plugin-vuetifyを使ってvuetifyをインポートしていましたが、そのやり方が良くなかったようで…。
批判するようなあれで誠に申し訳ないですが、下記のやり方が良くなかったです。


pluginsにvuetify.js(またはvuetify.ts)を配置するやり方ですが、使用していないコンポーネントもすべてインポートしちゃうっぽくて、チャンク化したときに最適化されないのが原因だと認識しています。
これが直接的な原因かはわかっていませんが、.output/public内にあるビルド後のファイルにおいて、cssファイルが最もファイルサイズが大きい状況になっていました。
解決方法
下記の記事が参考になります。私の記事より下記の記事を読んでくださいw

package.json
まず、vuetify-nuxt-moduleをインストールしてください。
これが今回の対応の根幹です。
npm install vuetify-nuxt-module -D
そして、vite-plugin-vuetifyがある場合は削除してください。
plugins/vuetify.ts
ファイルごと削除しました。
nuxt.config.ts
vite-plugin-vuetifyを削除するにあたり、色々な定義を削除しました。
追加したのは、vuetify-nuxt-moduleの1行だけです。
import vuetify from 'vite-plugin-vuetify' // いらない const defineNuxtConfig = () => { return { modules: [ 'vuetify-nuxt-module' // 追加 ], css: [ 'vuetify/lib/styles/main.sass' // いらない ], build: { transpile: ['vuetify'] // いらない }, hooks: { 'vite:extendConfig': (config: any) => { // いらない config.plugins!.push(vuetify()) // いらない } }, ssr: { noExternal: ['vuetify'] // いらない }, vite: { css: { preprocessorOptions: { scss: { api:'modern-compiler', additionalData: '@use "vuetify/styles" as *;' // いらない } } } } } } export default defineNuxtConfig
修正は以上です。
何か問題があった場合は別途報告いたします。
参考


コメント