





























这是一个创建于 1689 天前的主题,其中的信息可能已经有所发展或是发生改变。
https://www.jianshu.com/p/7994b1fc6dfe
读到一篇文章,提到了,webpack 如果想在引入一个包的时候,编译只引入的那部分代码,需要 babel 的支持。而且,只对自己的代码有效。如果是第三方的包,还不行,得写一个插件,实现转换。比如,
import { x } from 'module1';
转换成
import { x } from 'module1/a/bc';
要这么麻烦才能够实现 tree-shaking 啊!
当然这是 3 年前的文章了,现在的 webpack 也进化到了 5.0 的版本了吧?现在还是这样的么?
1 noe132 2021 年 10 月 29 日你这篇文章基本已经过时了。比如现在 webpack 用的不是 uglyfy plugin ,而是 terser plugin 。 只要你用到的库是 esm 而且 sideEffects: false ,tree shaking 就会正常工作。参考 material-ui ,代码结构就是这个文章所说的那种格式,不需要任何配置就支持 tree shaking 。 那种 babel 转换插件是 webpack 支持 tree shaking 之前存在的优化技巧,现在完全不需要这样的东西。 只有没有提供 esm 的库不支持 tree shaking ,比如 lodash 。这种情况你就必须手动 import 相应函数比如 'lodash/map',或者使用 babel-plugin-lodash ,更好的方法是使用 webpack alias 替换成 lodash-es 等支持 esm 的库。 推荐阅读最新版本的官方文档 |
2 wszgrcy 2021 年 10 月 29 日楼上基本上都说了.然后我记得还有作用域提升,应该也算摇树的一种吧. |
3 yyfearth 2021 年 10 月 29 日一楼说的很全了 像 lodash 这种 如果你不用 lodash-es 那就需要用 plugin 但是你用自己内部做的包 很可能就不能自动 tree-shaking (除非特别处理) 作为 library 想支持 tree-shaking 虽然现在 webpack 和 esm 已经出来很久了 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。