• vue项目打包,使用externals抽离公共的第三方库


    封装了一个插件,用来vue打包抽离公共的第三方库,使用unplugin进行插件开发,vite对应的功能使用了vite-plugin-externals进行二次开发

    github地址
    npm地址

    hfex-auto-externals-plugin

    自动注入插件,使用 unpluginhtml-webpack-plugin进行封装

    html-webpack-plugin从4.0版本开始引入了getHooks方法,因此项目中使用的html-webpack-plugin版本必须至少为4.0

    目前支持:

    install

    npm install hfex-auto-externals-plugin -D
    
    or
    
    npx pnpm install hfex-auto-externals-plugin -D
    
    or
    
    npx yarn add hfex-auto-externals-plugin -D
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    usage

    Vue项目中使用:

    我的项目中使用的vue版本是3.3.0

    我的项目中使用的vue-router版本是4.1.3

    您可以在本网站上搜索有关相应NPM的信息 unpkg

    Vue in Webpack
    // vue.config.js
    const HfexAutoExternalsPlugin = require('hfex-auto-externals-plugin')
    const externalsConfig = [
        {
            name:'vue',
            exposedField:'Vue',
            packageLink:'https://unpkg.com/vue@3.3.0/dist/vue.runtime.global.prod.js'
        },
        {
            name:'vue-router',
            exposedField:'VueRouter',
            packageLink:'https://unpkg.com/vue-router@4.1.3/dist/vue-router.global.prod.js'
        }
    ]
    
    module.exports = {
        configureWebpack:{
            plugins:[
                 HfexAutoExternalsPlugin({
                    externalsConfig:externalsConfig
                 })
            ]
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    effect

    项目打包

    npm run build
    
    • 1

    未使用 hfex-auto-externals-plugin

    该项目的包装体积效果图如下

    before build bundle

    使用 hfex-auto-externals-plugin

    该项目的包装体积效果图如下

    after build bundle

    after build net

    after build sourse

    显然,打包项目的体积已经大幅下降

    Vue in vite
    // vite.config.ts
    import { defineConfig } from 'vite'
    
    import HfexAutoExternalsPlugin from 'hfex-auto-externals-plugin/vite'
    const externalsConfig = [
        {
            name:'vue',
            exposedField:'Vue',
            packageLink:'https://unpkg.com/vue@3.3.0/dist/vue.runtime.global.prod.js'
        },
        {
            name:'vue-router',
            exposedField:'VueRouter',
            packageLink:'https://unpkg.com/vue-router@4.1.3/dist/vue-router.global.prod.js'
        }
    ]
    
    export default defineConfig({
        plugins:[
                 HfexAutoExternalsPlugin({
                    externalsConfig:externalsConfig
                })
        ]
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    ts issue

    ts issue

    可以使用//@ ts ignore 忽略

    ts issue

    effect

    build your project

    npm run build
    
    • 1

    未使用 before use hfex-auto-externals-plugin

    该项目的包装体积效果图如下

    before build bundle

    使用 after use hfex-auto-externals-plugin

    该项目的包装体积效果图如下

    after build bundle

    after build net

    after build sourse

    显然,打包项目的体积已经大幅下降

    parameter

    PropTypeDefaultdescriptionrequired
    externalsConfigArray<{name:string;exposedField:string;packageLink:string}>[]externalsConfigtrue
  • 相关阅读:
    图像处理:U-Net中的重叠-切片(Overlap-tile)
    Java 集合学习笔记:HashMap
    没有上司的舞会 - 树形DP
    场景分类任务可用数据集(部分)
    02 贪吃蛇
    C++DAY40
    免root修改手机imei的技术原理是什么?如何实现的?hook吗
    markdown操作
    【mfc/VS2022】计图实验:绘图工具设计知识笔记2
    【剑指Offer】47. 礼物的最大价值
  • 原文地址:https://blog.csdn.net/Hhjian524/article/details/133807907