ES6中的Lodash死代码删除

dyn*_*eed 5 uglifyjs ecmascript-6 lodash webpack babeljs

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

这样做的问题是,当缩小时,如果您完全导入了lodash,则UglifyJS不知道从lodash中删除未使用的函数.聪明的人已经提出从lodash导入你将要使用的函数,如下所示:

var forEach = require('lodash/array/forEach');
Run Code Online (Sandbox Code Playgroud)

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

使用ES6式进口和BabelDCE变压器可以达到同样的效果吗?例如:

import { forEach } from 'lodash';
Run Code Online (Sandbox Code Playgroud)

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

Juh*_*nen 10

鉴于你可能已经使用了Babel,我认为babel-plugin-lodash可以做到这一点.它能够执行转换

import lodash from 'lodash';

lodash.map([1, 2, 3], function(x) {
    // ... 
});
Run Code Online (Sandbox Code Playgroud)

import _map from 'lodash/collection/map';

_map([1, 2, 3], function(x) {
    // ... 
});
Run Code Online (Sandbox Code Playgroud)

重要!正如@reflog在评论中所提到的,这种方法不适用于lodash链接!

  • 请注意,它不适用于链接.因此,如果你尝试```_(array).map(func).tap(log)```它将无效. (2认同)