Webpack将把all of d3.js包括在做import { select } from 'd3'时,如下面的捆绑可视化。所示,做import { select } from 'd3-selection'可以解决问题,但这在一定程度上违背了树自动抖动的目的。
在我们的非库代码上,树抖动似乎在简单的情况下起作用。
我们在"modules": false中使用.babelrc来保留模块语法,在webpack.config.js resolve: { mainFields: ['module', 'browser', 'main'] }中使用'module'解析来选择d3的基于模块的代码。如您所见,导入的模块/d3/index.js是在ES6模块中分区的,而不是单块浏览器包或CommonJS导出。
这是作为一个问题在webpack github页面上发布,还是我做错了什么?这是使用所有最新版本的库(d3@4.5.0、webpack@2.2.1等)
编辑:似乎这与以下问题有关:
发布于 2017-06-30 17:13:25
树的抖动只适用于ES6模块,因为它们可以进行静态分析。AMD/CommonJS是很多lib发布的不可能的,这就是为什么你可能没有看到任何树抖动发生的原因。请参阅https://advancedweb.hu/2017/02/07/treeshaking
更新:似乎有一个新的webpack插件,是能够树摇动通用JS模块,https://github.com/indutny/webpack-common-shake。请注意,回购公司说它在阿尔法。
https://stackoverflow.com/questions/42143240
复制相似问题