为什么所有lodash最终都在我的webpack构建中?

fac*_*com 8 javascript reactjs webpack redux

我检查了包含它的所有库,它们都通过完整路径包含函数,即:import find from 'lodash/find'.

Redux是使用它的主要依赖项,我也检查了它们的代码,并且它正确地通过其完整路径导入每个函数.

这是我的webpack构建的json输出可视化:

https://www.dropbox.com/s/njjjtgtw19d52j6/Screenshot%202016-10-30%2006.27.44.png?dl=0

正如您所看到的,lodash占据了很大的比例,而其中只使用了一些方法.使用webpack-bundle-size-analyzerlodash达到135kb(当然是预先缩小和压缩),但它仍然比它应该大得多.

还有其他人经历过这个吗?我觉得它以某种方式减少了.

更新:我发现一个包使用点语法导入lodash函数:import find from 'lodash.find'.也许就是这样.点语法和完整路径语法之间有什么区别?

Ori*_*ori 1

使用babel-plugin-lodash将 lodash 方法的所有导入转换import { map } from 'lodash';为直接引用import _map from 'lodash/map';:

{
  "plugins": ["lodash"],
  "presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)

将其与lodash-webpack-plugin结合使用以仅包含您需要的功能:

plugins: [
     new LodashModuleReplacementPlugin({ 'collections': true })
]
Run Code Online (Sandbox Code Playgroud)