Vue打包大文件分析

分析得知,占用空間的大文件如下:

  • .map
  • vendor.[hash].js
  • app.[hash].css
  • 其余的大文件是一些高像素的圖片, 是否需要壓縮根據(jù)項目情況自定

一、.map文件

.map 文件是用作瀏覽器顯示詳細(xì)錯誤信息的, 只有Chrome有用, 正式環(huán)境不需要這樣的功能;

// config/index.js
productionSourceMap: false

二、vendor.[hash].js

vendor.[hash].js文件主要內(nèi)容是項目用到的第三方庫: Vue|Element-ui|Vue-router|Vuex| axios 等.
開發(fā)怎么使用沒有過多影響, 生產(chǎn)環(huán)境使用在打包的時候就會顯得非常大(Element-ui全部引用了).
所以推薦生產(chǎn)環(huán)境采用cdn的方式.

<!-- 用cdn方式引用包需要注意引用時標(biāo)注版本號 unpkg.com/:package@:version/:file 版本號依項目自定  -->
<script src="https://unpkg.com/vue@2.5.2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router@3.0.1/dist/vue-router.js"></script>
<script src="https://unpkg.com/vuex@3.1.0/dist/vuex.js"></script>
<script src="https://unpkg.com/element-ui@2.6.1/lib/index.js"></script>

// 然后在 build/webpack.base.conf.js 文件 => module.exports 中做如下添加
// 參考 => '項目import時用的名稱': '根據(jù)cdn引入使用的包名, 一般出自<global.xxx> xxx 就是需要用的名稱'
externals: {
  'vue': 'Vue',
  'vue-router': 'VueRouter',
  'vuex': 'Vuex',
  'element-ui': 'ELEMENT',
},

三、app.[hash].css

app.[hash].css文件的壓縮不是很重要, 大小異常是靜態(tài)圖片被webpack解析成base64形式
如果圖片不是特別大, 建議不做處理

// build/webpack.base.conf.js => module.exports => module 修改
// limit: 10000 => limit: 800
{
  test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
  loader: 'url-loader',
  options: {
    limit: 800, 
    name: utils.assetsPath('img/[name].[hash:7].[ext]')
  }
},
// limit: 10000 指的是小于100kb的圖片使用base64的方式放在 app.[hash].css 文件里引用

額外加分項

路由懶加載
參見官方詳解:Vue路由懶加載

樣式懶加載
需要用到一些插件: 根據(jù) webpack x.x 版本來選擇插件

// 引用了其他文章, 實際上也沒太搞懂
// webpack 4.x

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

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

new MiniCssExtractPlugin({
  filename: devMode ? 'css/[name].css' : 'css/[name].[hash].css',
  chunkFilename: devMode ? 'css/[id].css' : 'css/[id].[hash].css',
}),
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容