ES6 中的 Lodash 死代码删除

Lodash Dead Code Removal in ES6

我一直在使用 lodash in my applications and libraries and I've been packaging my applications and libraries with webpack (and UglifyJS)。

这样做的问题是,在缩小时,如果您完整导入了 lodash,UglifyJS 不知道要从 lodash 中删除未使用的函数。聪明的人想到了只从 lodash 导入你要使用的函数,就像这样:

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

这很好用,并且使我的代码的编译版本小得多。但是,在使用 lodash 的许多部分的文件中,它可能会非常乏味。

用ES6风格的import和Babel's DCE transformer能达到同样的效果吗?例如:

import { forEach } from 'lodash';

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

鉴于您可能已经在使用 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 链接!