在this performance audit of a React site的评论中,lodash作者建议" cherry-picking" lodash中的方法(即require
个别方法而不是整个lodash包)或使用individual packages。但是,如果在捆绑过程中使用诸如uglify或闭包编译器之类的死代码消除器(使用browserify或webpack),这不应该是不必要的吗?
答案 0 :(得分:2)
如果您使用的是CommonJS样式require('lodash')
,则Uglify不会消除死代码(我不认为Closure Compiler也可以)。
但是,如果您正在使用ES6样式import { merge, reduce } from 'lodash'
(例如),您将能够利用Webpack2(其他一些捆绑包也支持它)来利用树震动。由于ES6模块系统具有静态结构,因此捆绑器可以执行静态分析并确定库的某些部分未被使用并消除它们。
有关使用Webpack 2进行树木抖动的更多信息,您可以查看http://www.2ality.com/2015/12/webpack-tree-shaking.html。
在撰写此答案时(2016年3月3日),Webpack 2仍处于测试阶段,因此可能存在一些问题,但如果您想进行试验,请尝试一下!