在执行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.0
,webpack@2.2.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版。