解決vue打包wendor過大的問題

注意vue的配置文件webpack.base.conf.js ===vue-cli里是根目錄的vue.config.js的configureWebpack節(jié)點
不同版本vue請根據(jù)實際情況修改
首先查看引用資源例如echarts提取到index.html中cdn引入

一唐片、簡單方法

常用vue+vueRouter+axios+vuex+elementUI
避免打包
然后找到build/webpack.base.conf.js或者vue.config.js文件,

#vue-cli  根目錄的vue.config.js
module.exports = {
configureWebpack:()=>{
      return {
          externals: {
              'vue': 'Vue',
              'vue-router': 'VueRouter',
              'element-ui': 'ELEMENT',
           }
      }
} } 

#webpack.base.conf.js
module.exports = {
          externals: {
              'vue': 'Vue',
              'vue-router': 'VueRouter',
              'element-ui': 'ELEMENT',
           }
} 

這樣webpack就不會把vue.js, vue-router, element-ui庫打包了。聲明一下,我把main.js中對element的引入刪掉了,不然我發(fā)現(xiàn)打包后的app.css還是會把element的css打包進去哆姻,刪掉后就沒了。

最后index.html引入css+js

可去官網(wǎng)下載最新版

  <script src="https://cdn.bootcss.com/vue/2.5.21/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
  <script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>
  <script src="https://unpkg.com/vant/lib/vant.min.js"></script>
1.在index.html的文件頭部引入element-ui的組件庫。

引入vue

<!-- 開發(fā)版饥努,開發(fā)過程中使用此方案-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<!-- 生產(chǎn)版,打包的時候使用此方案 -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

引入element-ui

<!-- 引入樣式 -->
<link rel="stylesheet" >
<!-- 引入組件庫 -->
<script src="https://unpkg.com/element-ui@2.3.9/lib/index.js"></script>
2.在main.js中進行修改如下所示
// import Vue from 'vue'            //需要注釋掉全局本地引入的vue
import App from './App'
import router from './router'

Vue.config.productionTip = false

Vue.use(ELEMENT);               //在外部引入的element-ui的為ELEMENT八回,如此寫即可

new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
3.在build\webpack.base.conf.js中進行修改酷愧,在module.exports中添加如下內(nèi)容:
externals:{
  "element-ui":"ELEMENT",
  "vue":"Vue"
},
// 思為不進行打包的文件驾诈,如不設(shè)置,外部引入的內(nèi)容將會被打包

然后你打包就會發(fā)現(xiàn)vendor文件小了很多~

二溶浴、詳版方法


為了把路由分模塊乍迄,然后每次進入一個新頁面才加載該頁面所需要的資源(也就是異步加載路由),我們可以像下面這樣使用(router.js):

一士败、路由懶加載

const Home = () => import('./views/Home.vue');
const MyInfo = () => import('./views/MyInfo.vue');

在.babelrc中

"plugins": ["@babel/plugin-syntax-dynamic-import"]

二闯两、分離公共代碼

webpack 4.x
optimization與output同級

 optimization: {
    runtimeChunk: {
      name: 'manifest'
    },
    splitChunks: {
      chunks: 'async',
      minChunks: 2,
      maxAsyncRequests: 5,
      maxInitialRequests: 3,
      name: false,
      cacheGroups: {
        vendor: {
          name: 'vendor',
          // chunks 有三個可選值,”initial”, “async” 和 “all”. 分別對應(yīng)優(yōu)化時只選擇初始的chunks拱烁,所需要的chunks 還是所有chunk
          chunks: 'initial',
          priority: -10,
          reuseExistingChunk: false,
          test: /[\\/]node_modules[\\/]/
        }
      }
    }
  },

三生蚁、css懶加載

const MiniCssExtractPlugin = require("mini-css-extract-plugin");

該插件需要webpack 4.x

//sass
      {
        test: /\.(sc|sa|c)ss$/,
        use: [
          MiniCssExtractPlugin.loader,
          'css-loader',
          'postcss-loader',
          'sass-loader',
        ]
      },

plugins中:

new MiniCssExtractPlugin({
      // Options similar to the same options in webpackOptions.output
      // both options are optional
      filename: devMode ? 'css/[name].css' : 'css/[name].[hash].css',
      chunkFilename: devMode ? 'css/[id].css' : 'css/[id].[hash].css',
    }),

四、CDN引入

  <script src="https://cdn.bootcss.com/vue/2.5.21/vue.min.js"></script>
  <script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script>
  <script src="https://cdn.bootcss.com/vuex/3.0.1/vuex.min.js"></script>
  <script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>
  <script src="https://unpkg.com/vant/lib/vant.min.js"></script>

webpack.base.conf.js中

externals: {
    'vue': 'Vue',
    'vue-router': 'VueRouter',
    'vuex': 'Vuex',
    'axios': 'axios',
    'vant': 'vant'
  },

externals與output同級戏自。

刪掉項目中import的這幾個相關(guān)的邦投,以及Vue.use()。eslint插件報錯not defined的話擅笔,前面加個window志衣,如window.VueRouter。

五猛们、js壓縮念脯、css壓縮
這個就不說了。

推薦使用webpack 4.x弯淘,在production模式下有Tree Shaking和Scope Hoisting绿店。
如果還是過大,可以使用下面插件:

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
plugins: [
      new BundleAnalyzerPlugin()
  ]

它會生成一個分析圖庐橙,你的文件里包含了哪些文件假勿,打包后,它會自動在瀏覽器中打開态鳖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末转培,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子浆竭,更是在濱河造成了極大的恐慌浸须,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件邦泄,死亡現(xiàn)場離奇詭異删窒,居然都是意外死亡,警方通過查閱死者的電腦和手機顺囊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門易稠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人包蓝,你說我怎么就攤上這事驶社。” “怎么了测萎?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵亡电,是天一觀的道長。 經(jīng)常有香客問我硅瞧,道長份乒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任腕唧,我火速辦了婚禮或辖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘枣接。我一直安慰自己颂暇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布但惶。 她就那樣靜靜地躺著耳鸯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膀曾。 梳的紋絲不亂的頭發(fā)上县爬,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音添谊,去河邊找鬼财喳。 笑死,一個胖子當(dāng)著我的面吹牛斩狱,可吹牛的內(nèi)容都是我干的耳高。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼喊废,長吁一口氣:“原來是場噩夢啊……” “哼祝高!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起污筷,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤工闺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓣蛀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陆蟆,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年惋增,在試婚紗的時候發(fā)現(xiàn)自己被綠了叠殷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡诈皿,死狀恐怖林束,靈堂內(nèi)的尸體忽然破棺而出像棘,到底是詐尸還是另有隱情,我是刑警寧澤壶冒,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布缕题,位于F島的核電站,受9級特大地震影響胖腾,放射性物質(zhì)發(fā)生泄漏烟零。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一咸作、第九天 我趴在偏房一處隱蔽的房頂上張望锨阿。 院中可真熱鬧,春花似錦记罚、人聲如沸墅诡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽书斜。三九已至,卻和暖如春酵使,著一層夾襖步出監(jiān)牢的瞬間荐吉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工口渔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留样屠,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓缺脉,卻偏偏與公主長得像痪欲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子攻礼,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 一业踢、 組件component 1. 什么是組件? 組件(Component)是 Vue.js 最強大的功能之一礁扮。組...
    饑人谷_Leonardo閱讀 1,954評論 0 18
  • 作者:華爾街見聞技術(shù)團隊 - 花褲衩segmentfault.com/a/1190000015919928 推薦先...
    grain先森閱讀 4,952評論 0 6
  • 非常感謝胖哥的博客和掘金小冊的技術(shù)分享太伊,希望大家去下面的鏈接去查看原文雇锡,他們寫的非常好,都是多個項目經(jīng)驗的總結(jié)A沤埂锰提!...
    示十閱讀 2,253評論 0 2
  • GitChat技術(shù)雜談 前言 本文較長,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack立肘,它要...
    蕭玄辭閱讀 12,681評論 7 110
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫边坤、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,066評論 4 62