Webpack 打包優(yōu)化

現(xiàn)在全新的項目比較少了闯睹,大部分是在原有項目上面新增需求戏羽。收到一個小需求,本身需求不難楼吃。這項目是把后端操作系統(tǒng)和H5手機端展示頁做在一起的始花,打包入口文件只有一個,最后打包的時發(fā)現(xiàn)打包后的包體積比我想象中大太多了孩锡,H5部分還是需要在手機端展示衙荐。就有了后續(xù)……

Analyze 分析

vue-cli自帶分析,直接script開啟: "analyze": "npm_config_report=true npm run build"

分析文件

分析文件
static/js/vendor.0b9fa55c7048684aba81.js (1.18 MB)
static/js/app.c3251a9bef8c1924ea86.js (853.75 KB)

router 按需加載

原來這樣的寫法:import Home from '@/pages/home'
改成:const Home = () => import('@/pages/home')
1553067494614.jpg

添加SplitChunksPlugin

webpack 3 to webpack 4

餐卡:To v4 from v3
參考:html-webpack-plugin浮创,
參考:vue-loader升級15
參考: webpack3.x升級webpack4

  • 更新 webpack 到 4.28.3 版本
  • 更新 webpack-dev-server 到 3.1.14版本
  • 更新 vue-loader 到 15.7.0版本
  • 更新 html-webpack-plugin 到 3.2.0 版本
  • 添加 webpack-cli 版本 3.2.1
  • 添加 mini-css-extract-plugin 版本 0.5.0

webpack.dev.conf 修改

const VueLoaderPlugin = require('vue-loader/lib/plugin')
...
  // 開發(fā)環(huán)境引入
  mode: 'development',
  ...
  module: {
    ...
  }
  plugins: {
    ...
    new VueLoaderPlugin()
    ...
  }
  devServer: {
    ...
  }

接著, 以下插件被廢棄掉了

  • webpack.DefinePlugin
  • webpack.NamedModulesPlugin
  • webpack.NoEmitOnErrorsPlugin

utils.js 修改

現(xiàn)在 Vue Loader v15 使用了一個不一樣的策略來推導語言塊使用的 loader,需要更換成mini-css-extract-plugin

...
// 注釋掉原來的插件
// const ExtractTextPlugin = require("extract-text-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
...
// 找到:
// return ExtractTextPlugin.extract({
//   use: loaders,
//   fallback: "vue-style-loader",
//   publicPath: '../../'
// });
// 改為:
return [MiniCssExtractPlugin.loader].concat(loaders)

webpack.prod.conf.js 修改

vue-loader 升級了對應也要升級
extract-text-webpack-plugin 更換成 uglifyjs-webpack-plugin
要在配置表里添加optimization選項

const VueLoaderPlugin = require('vue-loader/lib/plugin')
...
output: { ...},
// 這里添加
optimization: {
    runtimeChunk: {
      name: 'manifest'
    },
    minimizer: [
      new UglifyJsPlugin({
        cache: true,
        parallel: true,
        sourceMap: config.build.productionSourceMap,
        uglifyOptions: {
          warnings: false
        }
      }),
      new OptimizeCSSPlugin({
      cssProcessorOptions: config.build.productionSourceMap
        ? { safe: true, map: { inline: false } }
        : { safe: true }
    }),
    ],
    splitChunks:{
      chunks: 'async',
      minSize: 30000,
      minChunks: 1,
      maxAsyncRequests: 5,
      maxInitialRequests: 3,
      name: false,
      cacheGroups: {
        vendor: {
          name: 'vendor',
          chunks: 'initial',
          priority: -10,
          reuseExistingChunk: false,
          test: /node_modules\/(.*)\.js/
        },
        styles: {
          name: 'styles',
          test: /\.(scss|css)$/,
          chunks: 'all',
          minChunks: 1,
          reuseExistingChunk: true,
          enforce: true
        }
      }
    }
  },
  // 這里添加
  plugins: [
  ...
    new VueLoaderPlugin(),
    new MiniCssExtractPlugin({
      filename: utils.assetsPath('css/[name].[contenthash].css')
    }),
  ...
]  

升級后

由于后臺操作系統(tǒng)和H5是寫在一項目里面砌函,所以需要多做一步斩披。

多個入口\出口

  • 拆成多入口打包
  • 看到ueditor這個插件時,這個富文本是非常大的讹俊,打包H5可以排除掉
  • 框架用了兩個:element-ui(PC端)垦沉、mint-ui(手機端),分入口打包
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末仍劈,一起剝皮案震驚了整個濱河市厕倍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贩疙,老刑警劉巖讹弯,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異这溅,居然都是意外死亡组民,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門悲靴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來臭胜,“玉大人,你說我怎么就攤上這事∷嗜” “怎么了乱陡?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長仪壮。 經常有香客問我憨颠,道長,這世上最難降的妖魔是什么睛驳? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任烙心,我火速辦了婚禮,結果婚禮上乏沸,老公的妹妹穿的比我還像新娘淫茵。我一直安慰自己,他們只是感情好蹬跃,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布匙瘪。 她就那樣靜靜地躺著,像睡著了一般蝶缀。 火紅的嫁衣襯著肌膚如雪丹喻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天翁都,我揣著相機與錄音碍论,去河邊找鬼。 笑死柄慰,一個胖子當著我的面吹牛鳍悠,可吹牛的內容都是我干的。 我是一名探鬼主播坐搔,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼藏研,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了概行?” 一聲冷哼從身側響起蠢挡,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凳忙,沒想到半個月后业踏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡涧卵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年堡称,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艺演。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡却紧,死狀恐怖桐臊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情晓殊,我是刑警寧澤断凶,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站巫俺,受9級特大地震影響认烁,放射性物質發(fā)生泄漏。R本人自食惡果不足惜介汹,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一却嗡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘹承,春花似錦窗价、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至骤竹,卻和暖如春帝牡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒙揣。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工靶溜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懒震。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓墨技,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挎狸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容