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

时间:2016-10-30 13:29:54

标签: javascript reactjs webpack redux

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

{
  "plugins": ["lodash"],
  "presets": ["es2015"]
}

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

plugins: [
     new LodashModuleReplacementPlugin({ 'collections': true })
]