npm 包 dynamic-dedupe 使用教程

阅读时长 4 分钟读完

什么是 dynamic-dedupe

dynamic-dedupe 是一个可以帮助我们优化代码库的 npm 包,它可以根据运行时上下文动态排除重复的代码。它的作用类似于 Webpack 的 scope hoisting,可以帮助我们在保证功能完整性的前提下减少代码体积,提升页面性能。

安装 dynamic-dedupe

我们可以通过 npm 安装 dynamic-dedupe:

使用 dynamic-dedupe

  1. 第一步,我们需要在 webpack 配置文件中引入 dynamic-dedupe:
  1. 第二步,将 dynamic-dedupe 插件加入到 webpack 的插件列表中:

这样,webpack 编译时就会自动使用 dynamic-dedupe 插件进行代码优化了。

动态排重原理

dynamic-dedupe 的排重原理是基于 Webpack v4 或更新版本的 optimization.concatenateModules 特性实现的。当一个模块被多次动态引入时,dynamic-dedupe 会将这些引入结果汇总起来,将它们合并成一个模块,然后通过 optimization.concatenateModules 特性进行优化,达到排重的效果。

实战使用 dynamic-dedupe

为了更好地理解 dynamic-dedupe 的使用方法和优化效果,我们来通过一个实例来说明。

假设我们有如下的 Webpack 配置:

-- -------------------- ---- -------
-------------- - -
  ------ -
    ---- -----------------
  --
  ------- -
    --------- ----------------------------
    ----- ----------------------- --------
  --
  ------------- -
    ------------------- -----
  --
  -------- -
    --- ----------------------
  --
-

我们的代码库中有两个包,分别是 lodashmoment,我们通过动态引入它们的一个函数实现功能:

-- -------------------- ---- -------
----------------
  --------- -- -
    ------------------------------ ---------- ------
  --
  ------------ -- -
    ----------------- ----- -------- ----- ------- -------- -----
  ---

----------------
  -------------- -- -
    --------------------------------- -- ----- ------- -----
  --
  ------------ -- -
    ----------------- ----- -------- ----- ------- -------- -----
  ---

我们首次运行 npm run build,得到两个包的代码都被编译到了打包文件中。

接下来,我们修改代码,将 lodash 包的代码进行重复,运行 npm run build。

可以看到,经过 dynamic-dedupe 的处理,lodash 包的代码被排除,打包文件大小减少了约 50KB。

总结

在前端开发中,代码体积越来越受到重视,dynamic-dedupe 可以帮助我们在保证代码功能完整性的前提下,减少代码体积,提升页面性能。学会使用 dynamic-dedupe,可以帮助我们更好地优化代码库。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/84628