VUE-CLI3项目打包配置优化

在项目开发完成后,就会进行打包部署,有的时候项目开发过程中,代码写的比较臃肿 或者各种包引用的比较多,就会造成打包后包的体积变大,导致部署后访问速度比较慢。 下面就记录下自己在项目中的一些配置来进行优化这些问题。
通过 npm run build --report 命令(好多贴中都是借助webpack-bundle-analyzer帮助分析,不用安装这个,使用前面那个自带命令就好) 会在打包后的文件夹内生成一个report.html文件,打开会就是各种打包后文件大小的分析页面,我们可以看到生成的最大文件为chunk-vendors.js
在这里插入图片描述
这个文件主要又由echarts、ui库、lodash、zrender组成,其中echarts、ui库(element-ui,iview-ui)、vue为我们项目开发时必要引入的文件,所以我们如果把这写文件分离出来那么文件自然就会小了很多
主要步骤是

 1.  在index.html引入cdn路径,或者下载下来放在 /static/ 目录下引入也行。
 2.  package.json 中下载的依赖包 就不需要了,删掉 ,main.js中引入的也可以注释掉了
 3.  使用 webpack 配置 externals,来分离这些文件
// 为了直观显示  我这里是注释掉了
// import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// import ViewUI from 'view-design'
// import 'view-design/dist/styles/iview.css'

Vue.prototype.$http = axios
Vue.prototype.$bus = new Vue();
Vue.config.productionTip = false

// Vue.use(ViewUI)
Vue.use(VueClipboard)
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

  // vue.config.js中
 configureWebpack: {
    externals: {
      //包名 : 全局变量名
      "vue": 'Vue',
      "echarts": 'echarts',
      // iview需要这么做,直接  "view-design": 'ViewUI',会报错,iview版本问题
      "view-design": 'iview',
      "iview": 'ViewUI',
    },
  },

在这里插入图片描述

然后,还有使用路由懒加载,不过现在大家都使用这个了吧。

然后,还可以再配置gzip压缩,用compression-webpack-plugin插件对我们的代码进行压缩

// yarn安装
yarn add compression-webpack-plugin -D
// 或npm
npm install compression-webpack-plugin --save-dev

如果安装压缩依赖包启动后报错:TypeError: Cannot read property ‘tapPromise’ of undefined,应该是版本问题,将版本固定在"compression-webpack-plugin": "^5.0.0",这个版本,再重新启动就好了

const CompressionPlugin = require('compression-webpack-plugin')

module.exports = {
  // ...
  configureWebpack: {
    plugins: [
      new CompressionPlugin({
        test: /\.(js|css)?$/i, // 哪些文件要压缩
        filename: '[path].gz[query]', // 压缩后的文件名
        algorithm: 'gzip', // 使用gzip压缩
        minRatio: 1, // 压缩率小于1才会压缩
        deleteOriginalAssets: true // 删除未压缩的文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false
      })
    ]
  }
}

然后进行打包操作后 会看到压缩后的资源小很多

在这里插入图片描述还需要在nginx服务器配置一下静态压缩:

server {
    gzip on;
    gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
    
    gzip_static on;
}

gzip_static设置为on之后,这样在访问资源的时候,如果存在“资源路径.gz”的文件,则会直接返回该文件,其优先级高于动态的gzip。

设置完后 可以对比前后打包后的体积对比。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值