相关文章推荐
要出家的大熊猫  ·  关于pip install ...·  1 年前    · 
粗眉毛的枇杷  ·  alpine linux mount ...·  1 年前    · 
千年单身的充电器  ·  C++ AMP 概述 | ...·  1 年前    · 
  • splitChunks: 設定 Chunks 的最大和最小 size。
  • LodashModuleReplacementPlugin: lodash tree shaking
  • vuetify-loader: vuetify tree shaking
  • 加入 splitChunks

    nuxt.config.js

    module.exports = {
      build: {
        optimization: {
          splitChunks: {
            minSize: 10000,
            maxSize: 250000
    

    這邊可以看到雖然總容量沒變,
    但很明顯已經將 chunks 明確切分開來了,
    一個 chunk 的容量更是沒有之前那麼大。

    加入 LodashModuleReplacementPlugin

    nuxt.config.js

    請先 npm i -D lodash-webpack-plugin

    const LodashModuleReplacementPlugin = require('lodash-webpack-plugin')
    module.exports = {
      build: {
        extend(config, ctx) {
    			config.plugins.unshift(new LodashModuleReplacementPlugin)
    			// rules[2].use[0] is babel-loader
    			config.module.rules[2].use[0].options.plugins = ['lodash']
    

    和做過 splitChunks 的上圖作比較,
    這邊已經將 lodash 做完 tree shaking,
    因此已經看不到 24kb 左右的 lodash,
    總容量減為 456.99kb。

    加入 vuetify-loader

    nuxt.config.js

    const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
    module.exports = {
      build: {
        extractCSS: true,
        analyze: {
          analyzerMode: 'static'
        transpile: [/^vuetify/],
        extend(config, ctx) {
          config.plugins.push(
            new VuetifyLoaderPlugin()
    

    再與上面比較,
    容量最大的 vuetify(74kb) 已被拆掉散落於各地。
    app.styl 的樣式也是被拆的不見蹤影,
    總容量減為 401.75kb。

    注意,部署時不能用 npm run analyze 模式哦,一定要用 npm run build

    自己試試看就知道了,
    執行 npm run analyze 時也會有提醒訊息。

    本篇嚴格說起來算不上什麼優化,
    只不過減少了一些專案大小,
    還有更多優化的內容沒有完成,
    我也在持續學習的路上,
    歡迎對於更多效能優化上的建議與分享。

    照慣例附上程式碼

    027-tree-shaking-bundle-size

    git clone -b 027-tree-shaking-bundle-size --single-branch https://github.com/hunterliu1003/blog.git
    cd blog
    npm install
    npm run analyze
    npm run build