我一直在我的应用程序和库中使用lodash,我一直用webpack(和UglifyJS)打包我的应用程序和库。
这个问题是,在缩小时,如果你完全导入lodash,UglifyJS不知道从lodash中删除未使用的函数。聪明的人已经想出了从lodash导入你将要使用的功能,如下所示:
var forEach = require('lodash/array/forEach');
这很有效,并且导致我的代码的编译版本小得多。但是,使用lodash的许多部分的文件可能非常繁琐。
使用ES6风格的导入和Babel的DCE transformer可以达到同样的效果吗?例如:
import { forEach } from 'lodash';
我很怀疑,因为它是从lodash库的根目录导入的,而不是像前一个例子那样从单个函数的文件导入。
答案 0 :(得分:10)
鉴于你可能已经使用了Babel,我认为babel-plugin-lodash可以做到这一点。它能够从
执行转换import lodash from 'lodash';
lodash.map([1, 2, 3], function(x) {
// ...
});
到
import _map from 'lodash/collection/map';
_map([1, 2, 3], function(x) {
// ...
});
重要!正如@reflog在评论中所提到的,这种方法不适用于lodash链接!