ES6中的Lodash死代码删除

时间:2015-10-07 01:07:50

标签: ecmascript-6 lodash webpack babeljs uglifyjs

我一直在我的应用程序和库中使用lodash,我一直用webpack(和UglifyJS)打包我的应用程序和库。

这个问题是,在缩小时,如果你完全导入lodash,UglifyJS不知道从lodash中删除未使用的函数。聪明的人已经想出了从lodash导入你将要使用的功能,如下所示:

var forEach = require('lodash/array/forEach');

这很有效,并且导致我的代码的编译版本小得多。但是,使用lodash的许多部分的文件可能非常繁琐。

使用ES6风格的导入和BabelDCE transformer可以达到同样的效果吗?例如:

import { forEach } from 'lodash';

我很怀疑,因为它是从lodash库的根目录导入的,而不是像前一个例子那样从单个函数的文件导入。

1 个答案:

答案 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链接!