• 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
  • 相关阅读:
    北京化工大学历年真题整理:没考上,换了个学校,但还是在北京~哈哈
    postgresql_anonymizer使用
    Jupyternotebook修改默认目录无效No such notebook dir
    Mybatis从零开始创建
    React组件
    C# WPF入门学习主线篇(三十)—— MVVM(Model-View-ViewModel)模式
    5.Python从入门到精通—Python 运算符
    GIS是个什么鬼,真的开眼了。感谢好学生的奉献。
    java流程程序控制
    139 单词拆分 140 单词拆分II
  • 原文地址:https://blog.csdn.net/Hhjian524/article/details/133807907