huangshuwei / blog

🈲黄书伟的个人博客
54 stars 8 forks source link

externals-外部扩展 #46

Open huangshuwei opened 3 years ago

huangshuwei commented 3 years ago

前言

externals 对于封装组件库,或者工具库非常有用。它可以防止将某些需要import的资源打包到输出文件中,而是在运行时再去从外部获取扩展依赖。具体参考官方文档

好处

打包体积小很多 假设我们封装基于 vue 的组件库,很难避免使用vue 的原型对象(prototype)。但是这样会将 vue 源码打包进去,如果配置了 externals,打包后的体积将会小很多。

使用externals 的条件

外部 library 可以下是下面任何一种形式:

配置

支持 字符串、对象、字符串数组、函数、正则配置。如:

module.exports = {
  //...
  externals: [
    {
      // 字符串
      react: 'react',
      // 对象
      lodash : {
        commonjs: 'lodash',
        amd: 'lodash',
        root: '_' // indicates global variable
      },
      // 字符串数组
      subtract: ['./math', 'subtract']
    },
    // 函数
    function(context, request, callback) {
      if (/^yourregex$/.test(request)){
        return callback(null, 'commonjs ' + request);
      }
      callback();
    },
    // 正则表达式
    /^(jquery|\$)$/i
  ]
};

参考