webpack常用插件使用

250 阅读2分钟

Plugin

1. webpack-bundle-analyzer

功能

可以解决首屏加载过慢的问题

使用

1.1 安装
npm install --save webpack-bundle-analyzer
1.2 配置
  • 在vue.config.js中添加配置
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
module.exports = {
    configureWebpack:{
        plugins:[
            new BundleAnalyzerPlugin({
                // 可以是 server static disabled三种选项
                // 1. server: 可以使用http服务器来显示软件包
                // 2. static:可以生成带有单个html文件的报告
                // 3. disabled: 可以结合generateStatsFile为true生成webpack的stats的报告文件
                analyzerMode:'server',
                analyzerHost:'xxx.x.x.x',
                analyzerPort:8888,
                generateStatsFile:true,  //是否生成stats.json文件
                reportFilename:'report.html',
                defaultSizes:'parsed'// stat parsed gzip三种可选
                openAnalyzer:true, // 默认在浏览器中自动打开报告
                generateStatsFile:true, // true:则在bundle输出目录中生成stats.json
                statsFilename: 'stats.json',
                statsOptions: null,
                logLevel: 'info'
            })
        ]
    }
}
  • 启动
npm run build --report
  • 效果图

webpack_notice1.jpg

webpack_notice_text1.jpg

  • 分析 可以发现chunk-vendors的js文件较大,接下来就对该文件进行优化

优化

1. CDN抽离不经常更新的库

功能

对于vue,element-ui,vue-router,axios,qs等不经常更新的库,可以用cdn缓存,缩小包的体积,减少首屏白屏时间

使用
  • 在vue.config.js中添加external配置
module.exports = {
    configureWebpack:{
        externals:{
            'vue':'Vue',
            'vue-router':'VueRouter',
            'axios':'axios',
            'element-ui':'Element',
            'qs':'Qs'
        }
    }
}
  • 在main.js中将import引入的改成require引入
// import Vue from 'vue'
const Vue = require('vue')
// import Element from 'element-ui';
const Element = require('element-ui')
在router.js// import VueRouter from 'vue-router'
const VueRouter = require('vue-router')
  • 在index.html中引入对应的js文件

  • 压缩后的文件体积大小

webpack_notice2.jpg

webpack_notice_text2.jpg

imagemin-webpack-plugin

图片压缩插件

使用

1.安装

npm install --save-dev imagemin-webpack-plugin

2. 配置

const ImageminPlugin = require('imagemin-webpack-plugin').default;

module.exports = {
    new ImageminPlugin({
        disable: process.env.NODE_ENV !== 'production', // 开发时不启用
        pngquant: {//图片质量
          quality: '95-100'
        }
    })
}

ProvidePlugin

功能

导入全局,不需要在每个页面import

配置(无需安装)

    new webpack.ProvidePlugin({
        $: 'jquery',
        jQuery: 'jquery',
        'window.jQuery': 'jquery',
        'window.$': 'jquery',
        moment: 'moment',
        _: 'underscore',
    })

purifycss-webpack

功能

将css从js中提取出来

安装

npm install --save-dev purifycss-webpack

配置

const purifycssWebpack = require('purifycss-webpack');
const glob = require('glob');

module.exports = {
    new purifycssWebpack({
      paths: glob.sync(path.resolve('./src/*.html'))
    }),
}