• home > tools > Bundler > webpack >

    webpack打包发布npm包优化-vue/echarts等公共库抽离

    Author:zhoulujun Date:

    项目工程打包成sdk发布成npm包组件,webpack打包不引入vue、echarts等公共库怎么设置?

    在日常的项目开发中,我们会用到各种第三方库来提高效率,但随之带来的问题就是打包后的vendor.js体积过大,导致加载时空白页时间过长,给用户的体验太差。

    如果我们打包的时候不想将vue、echarts等公共库包含在内,需要配置两处地方,

    externals

    https://webpack.docschina.org/configuration/externals/

    设置 webpack 的 externals 来直接引用 cdn 上的 Vue,然后用 import('echarts') 来异步加载 echarts(会单独打包),或者也用 externals。

    下面就以Vue项目为例,介绍一下externals的使用。项目中引用了vue、vue-router、axios、element-ui、vuex等第三方库,那么我们的目标就是把这些从输出的 bundle 中排除依赖。

    // externals中的key是后面需要require的名字,value是第三方库暴露出来的方法名
    const webpackConfig = {
      // 移除已从cdn引入的组件,不打包以下命名的内容
      externals: {
        vue: 'Vue',
        'vue-router': 'VueRouter',
        vuex: 'Vuex',
        'element-ui': 'ELEMENT',
        'axios': 'axios',
      },
    };
    module.exports = {
      configureWebpack: { // 判断是否是开发还是生产,根据环境不同设置externals
        externals: process.env.NODE_ENV === 'production' ? assetsCDN.externals : {},
      },
    }

    然后在html文件引入这些库CDN资源即可,当然也可以es6 import引入

    如果是webpack打包,可以不打包这些公共库,但是在引入

    "peerDependencies": {
      "dayjs": "^1.10.7",
      "axios": "^0.21.1"
    },

    需要在package.json声明





    转载本站文章《webpack打包发布npm包优化-vue/echarts等公共库抽离》,
    请注明出处:https://www.zhoulujun.cn/html/tools/Bundler/webpack/2022_0519_8819.html