vueCl如何查看打包后文件的大小占比
vueCl查看打包后文件的大小占比
1. 執(zhí)行以下命令安裝
cnpm install webpack-bundle-analyzer --save-dev
2. vue.config.js 配置
chainWebpack: config => { // 查看打包文件體積大小 config .plugin('webpack-bundle-analyzer') .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin) }
3. 在package.json文件中 在 build 后面加上一個(gè) --report
"build": "vue-cli-service build --report"
我們打開(kāi)http://127.0.0.1:8888之后 就會(huì)看到一個(gè)可視化的 文件占比
對(duì)vue-cli項(xiàng)目打包后文件過(guò)大,以及圖片加載慢的問(wèn)題
最近在做一個(gè)項(xiàng)目時(shí)遇到vue項(xiàng)目打包后文件體積特別大,以及一個(gè)大背景圖加載緩慢的問(wèn)題
首先說(shuō)一下打包后體積大的解決方法
第一步
在vue.config.js文件中的 chainWebpack 方法 加入以下代碼,為的就是將vue中引入的一些方法如:vue,elementUI等不打包到我們的項(xiàng)目中,而是直接從cdn服務(wù)器獲取,從而減少打包的體積
圖片加載比較慢的話(huà)可以使用 下面代碼中config.module的方式,設(shè)置一個(gè)cdn的圖片地址,去引入圖片,然后整個(gè)vue里面的圖片地址或者背景圖地址的引用都會(huì)走這個(gè)地址(因?yàn)槲覍?duì)上傳cdn圖片不是很了解,所以使用的方式是:生產(chǎn)環(huán)境ip地址 + 生產(chǎn)環(huán)境vue存儲(chǔ)圖片的路徑,我發(fā)現(xiàn)這種方式遠(yuǎn)比直接在vue中使用圖片的絕對(duì)路徑或相對(duì)路徑的顯示快很多)
chainWebpack: (config) => { ? ?if (process.env.NODE_ENV === 'production') { ?// 判斷是否為是生成環(huán)境 ? ? ?var externals = { ? ? ? ? vue: 'Vue', ? ? ? ? axios: 'axios', ? ? ? ? 'element-ui': 'ELEMENT', ? ? ? ? 'vue-router': 'VueRouter', ? ? ? ? vuex: 'Vuex', ? ? ? ? echarts: 'echarts' ? ? ? } ? ? ? config.externals(externals) ? ? ? const cdn = { // 從cdn中獲取對(duì)象文件,減少打包體積 ? ? ? ? css: [ ? ? ? ? ? // element-ui css ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/element-ui/2.12.0/theme-chalk/index.css', ? ? ? ? ? // nprogress ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/nprogress/0.2.0/nprogress.min.css' ? ? ? ? ], ? ? ? ? js: [ ? ? ? ? ? // vue ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.min.js', ? ? ? ? ? // vue-router ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/vue-router/3.1.3/vue-router.min.js', ? ? ? ? ? // vuex ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/vuex/3.1.2/vuex.min.js', ? ? ? ? ? // axios ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/axios/0.18.0/axios.min.js', ? ? ? ? ? // element-ui js ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/element-ui/2.12.0/index.js', ? ? ? ? ? // echarts ? ? ? ? ? 'https://cdn.bootcdn.net/ajax/libs/echarts/4.9.0-rc.1/echarts.min.js' ? ? ? ? ] ? ? ? } ? ? ? ? // 通過(guò) html-webpack-plugin 將 cdn 注入到 index.html 之中 ? ? ? config.plugin('html') ? ? ? ? .tap(args => { ? ? ? ? ? args[0].cdn = cdn ? ? ? ? ? return args ? ? ? }) ? ? ? ?// 添加壓縮圖片的方式 ?如果沒(méi)有圖片很占加載時(shí)間的話(huà),可以省略這步 ? ? ? ?config.module ? ? ? ? .rule('images') ? ? ? ? .test(/\.(jpg|png|gif)$/) ? ? ? ? .use('url-loader') ? ? ? ? .loader('url-loader') ? ? ? ? .options({ ? ? ? ? ? limit: 10, // 以下配置項(xiàng)用于配置file-loader ? ? ? ? ? // 將圖片改為cdn獲取 ? ? ? ? ? publicPath: 'https://oss.xx.com/img', ? ? ? ? ? // 將圖片打包到dist/img文件夾下, 不配置則打包到dist文件夾下 ? ? ? ? ? outputPath: 'img', ? ? ? ? ? // 配置打包后圖片文件名 ? ? ? ? ? name: '[name].[ext]' ? ? ? ? }) ? ? ? ?.end() ? ? } }
第二步
添加使用gzip方式進(jìn)行代碼壓縮,如下:
// 先引入方法 const CompressionWebpackPlugin = require('compression-webpack-plugin') const productionGzipExtensions = ['js', 'css'] //在添加下面的方法 configureWebpack: { ? ? plugins: [ ? ? ? new CompressionWebpackPlugin({ ? ? ? ? asset: '[path].gz[query]', // 提示compression-webpack-plugin@3.0.0的話(huà)assets改為filename ? ? ? ? algorithm: 'gzip', ? ? ? ? test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'), ? ? ? ? threshold: 10240, ? ? ? ? minRatio: 0.8 ? ? ? }) ? ? ] ? }
第三步
注釋掉vue項(xiàng)目中使用 import 引入的vue,elementUI等方法
//注釋掉main.js中的相關(guān)的代碼 // import Vue from 'vue' // import NProgress from 'nprogress' // import 'nprogress/nprogress.css' // import ElementUI from 'element-ui' // import 'element-ui/lib/theme-chalk/index.css' // Vue.use(ElementUI) // 注釋掉 vuex中 下面的代碼 // import Vue from 'vue' // import Vuex from 'vuex' // Vue.use(Vuex) //注釋掉 路由中 下面的代碼 // import Vue from 'vue' // import VueRouter from 'vue-router' // Vue.use(VueRouter)
以上三步基本能將你的項(xiàng)目壓縮到一定程度了,也是本人自己測(cè)試過(guò)很多次,很大程度的壓縮了項(xiàng)目的體積
至于為什么要注釋這幾個(gè)地方,是因?yàn)樵诘谝徊街?,像vue,axios,router,elementuUI等等,這些包都已經(jīng)從cdn服務(wù)器獲取了,所以就不需要在項(xiàng)目中引用了,所以打包時(shí)的體積會(huì)小很多,在使用gzip進(jìn)行壓縮,體積就會(huì)很小了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vant中field組件label屬性?xún)啥藢?duì)齊問(wèn)題及解決
這篇文章主要介紹了vant中field組件label屬性?xún)啥藢?duì)齊問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05vue移動(dòng)端實(shí)現(xiàn)左滑編輯與刪除的全過(guò)程
vue.js是現(xiàn)在流行的js框架之一,vue 是一套用于構(gòu)建用戶(hù)界面的漸進(jìn)式j(luò)avascript框架,這篇文章主要給大家介紹了關(guān)于vue移動(dòng)端實(shí)現(xiàn)左滑編輯與刪除的相關(guān)資料,需要的朋友可以參考下2021-05-05vue中使用Cesium加載shp文件、wms服務(wù)、WMTS服務(wù)問(wèn)題
這篇文章主要介紹了vue中使用Cesium加載shp文件、wms服務(wù)、WMTS服務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Vue實(shí)現(xiàn)定位并解決內(nèi)存泄漏
Vue.js?是一個(gè)流行且強(qiáng)大的?JavaScript?框架,它允許我們構(gòu)建動(dòng)態(tài)和交互式?Web?應(yīng)用程序,本文我們將深入探討?Vue.js?應(yīng)用程序中內(nèi)存泄漏的原因,并探索如何定位和修復(fù)這些問(wèn)題的有效策略,希望對(duì)大家有所幫助2023-09-09vue項(xiàng)目引入antDesignUI組件實(shí)現(xiàn)
本文介紹了如何以Vue引入antDesignUI,主要包括下載安裝、配置和引入組件等步驟,通過(guò)本文,讀者可以快速了解antDesignUI在Vue中的應(yīng)用,感興趣的可以了解一下2023-08-08vue項(xiàng)目引入Iconfont圖標(biāo)庫(kù)的教程圖解
這篇文章主要介紹了vue項(xiàng)目引入Iconfont圖標(biāo)庫(kù)的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10vue 自定指令生成uuid滾動(dòng)監(jiān)聽(tīng)達(dá)到tab表格吸頂效果的代碼
這篇文章主要介紹了vue 自定指令生成uuid滾動(dòng)監(jiān)聽(tīng)達(dá)到tab表格吸頂效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09