vueCl如何查看打包后文件的大小占比

 更新时间:2023年06月08日 09:31:10   作者:优秀的土豆丝  
这篇文章主要介绍了vueCl如何 查看打包后文件的大小占比问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vueCl查看打包后文件的大小占比

1. 执行以下命令安装

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 后面加上一个 --report

"build": "vue-cli-service build --report"

我们打开http://127.0.0.1:8888之后 就会看到一个可视化的 文件占比

对vue-cli项目打包后文件过大,以及图片加载慢的问题

最近在做一个项目时遇到vue项目打包后文件体积特别大,以及一个大背景图加载缓慢的问题

首先说一下打包后体积大的解决方法

第一步

在vue.config.js文件中的 chainWebpack 方法 加入以下代码,为的就是将vue中引入的一些方法如:vue,elementUI等不打包到我们的项目中,而是直接从cdn服务器获取,从而减少打包的体积

图片加载比较慢的话可以使用 下面代码中config.module的方式,设置一个cdn的图片地址,去引入图片,然后整个vue里面的图片地址或者背景图地址的引用都会走这个地址(因为我对上传cdn图片不是很了解,所以使用的方式是:生产环境ip地址 + 生产环境vue存储图片的路径,我发现这种方式远比直接在vue中使用图片的绝对路径或相对路径的显示快很多)

chainWebpack: (config) => {
   if (process.env.NODE_ENV === 'production') {  // 判断是否为是生成环境
     var externals = {
        vue: 'Vue',
        axios: 'axios',
        'element-ui': 'ELEMENT',
        'vue-router': 'VueRouter',
        vuex: 'Vuex',
        echarts: 'echarts'
      }
      config.externals(externals)
      const cdn = { // 从cdn中获取对象文件,减少打包体积
        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'
        ]
      }
        // 通过 html-webpack-plugin 将 cdn 注入到 index.html 之中
      config.plugin('html')
        .tap(args => {
          args[0].cdn = cdn
          return args
      })
       // 添加压缩图片的方式  如果没有图片很占加载时间的话,可以省略这步
       config.module
        .rule('images')
        .test(/\.(jpg|png|gif)$/)
        .use('url-loader')
        .loader('url-loader')
        .options({
          limit: 10, // 以下配置项用于配置file-loader
          // 将图片改为cdn获取
          publicPath: 'https://oss.xx.com/img',
          // 将图片打包到dist/img文件夹下, 不配置则打包到dist文件夹下
          outputPath: 'img',
          // 配置打包后图片文件名
          name: '[name].[ext]'
        })
       .end()
    }
}

第二步

添加使用gzip方式进行代码压缩,如下:

// 先引入方法
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
//在添加下面的方法
configureWebpack: {
    plugins: [
      new CompressionWebpackPlugin({
        asset: '[path].gz[query]', // 提示compression-webpack-plugin@3.0.0的话assets改为filename
        algorithm: 'gzip',
        test: new RegExp('\\.(' + productionGzipExtensions.join('|') + ')$'),
        threshold: 10240,
        minRatio: 0.8
      })
    ]
  }

第三步 

注释掉vue项目中使用 import 引入的vue,elementUI等方法

//注释掉main.js中的相关的代码
// 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)

以上三步基本能将你的项目压缩到一定程度了,也是本人自己测试过很多次,很大程度的压缩了项目的体积

至于为什么要注释这几个地方,是因为在第一步中,像vue,axios,router,elementuUI等等,这些包都已经从cdn服务器获取了,所以就不需要在项目中引用了,所以打包时的体积会小很多,在使用gzip进行压缩,体积就会很小了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue 项目地址去掉 #的方法

    vue 项目地址去掉 #的方法

    vue 项目往往会搭配 vue-router 官方路由管理器,它和 vue.js 的核心深度集成,让构建单页面应用变得易如反掌。这篇文章主要介绍了vue 项目地址去掉 #的方法,需要的朋友可以参考下
    2018-10-10
  • element-ui循环显示radio控件信息的方法

    element-ui循环显示radio控件信息的方法

    今天小编就为大家分享一篇element-ui循环显示radio控件信息的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 使用vue.js开发时一些注意事项

    使用vue.js开发时一些注意事项

    使用vue.js进行项目的开发已经有了一定的时间,在任务的过程中以及和不同的开发使用者交流中,逐渐对vue.js的使用心得有了一定的积累。本文主要给大家分享一些开发时需要注意的事项
    2016-04-04
  • Vue中使用addEventListener添加事件、removeEventListener移除事件的示例详解

    Vue中使用addEventListener添加事件、removeEventListener移除事件的示例详解

    最近在项目中需要用到addEventListener监听滚动条滚动的高度,所以就研究了一下在vue中是怎么进行事件监听的,添加事件和移除事件结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-12-12
  • vue项目中openlayers绘制行政区划

    vue项目中openlayers绘制行政区划

    这篇文章主要为大家详细介绍了vue项目中openlayers绘制行政区划,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 详解vue-cli 快速搭建单页应用之遇到的问题及解决办法

    详解vue-cli 快速搭建单页应用之遇到的问题及解决办法

    这篇文章主要介绍了详解vue-cli 快速搭建单页应用之遇到的问题及解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • ToB项目如何沉淀业务公共组件示例详解

    ToB项目如何沉淀业务公共组件示例详解

    这篇文章主要为大家介绍了ToB项目如何沉淀业务公共组件示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Vue webpack的基本使用示例教程

    Vue webpack的基本使用示例教程

    这篇文章主要介绍了Vue webpack的基本使用,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • vue 使用 canvas 实现手写电子签名

    vue 使用 canvas 实现手写电子签名

    这篇文章主要介绍了vue 使用 canvas 实现手写电子签名功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 详解Vue-cli来构建Vue项目的步骤

    详解Vue-cli来构建Vue项目的步骤

    这篇文章主要为大家介绍了Vue-cli来构建Vue项目的步骤,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12

最新评论