Webpack 2 Not Tree Shaking D3.js正确

时间:2017-02-09 17:33:03

标签: javascript d3.js webpack ecmascript-6 tree-shaking

在执行import { select } from 'd3'时,Webpack将在捆绑包中包含所有 d3.js,如下所示http://www.w3schools.com/sql/sql_like.asp问题可以通过执行import { select } from 'd3-selection'来解决但这有点挫败了自动树摇动的目的。

在我们的非库代码中,树摇动似乎在简单的情况下起作用。

我们在"modules": false中使用.babelrc以保留模块语法并在我们的webpack.config.js 'module'中使用resolve: { mainFields: ['module', 'browser', 'main'] } resolve以选择d3的模块基于代码。如您所见,导入的bundle visualization.在ES6模块中进行了分区,而不是单片浏览器包或CommonJS导出。

这应该在webpack github页面上发布为问题还是我做错了什么?这是使用所有最新版本的库(d3@4.5.0webpack@2.2.1等)

编辑: 这似乎与以下问题有关:

1 个答案:

答案 0 :(得分:1)

树摇动仅适用于ES6模块,因为它们可以进行静态分析。许多libs发布的AMD / CommonJS不可能,这就是为什么你可能没有看到任何树发生震动的原因。请参阅https://advancedweb.hu/2017/02/07/treeshaking

更新: 似乎有一个新的webpack插件能够树摇动Common JS模块,https://github.com/indutny/webpack-common-shake。请注意,回购说它是alpha版。