2015-10-07 95 views
5

我一直在我的應用程序和庫中使用lodash,並且我一直在使用webpack(和UglifyJS)打包我的應用程序和庫。Lodash在ES6中刪除死代碼

這個問題是,當縮小時,如果你完全導入lodash,UglifyJS不知道從lodash中刪除未使用的函數。聰明人想出了進口只是你打算從lodash使用,像這樣的功能:

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

這在我的代碼更小的編譯版本的偉大工程和結果。但是,使用lodash的許多部分的文件可能非常繁瑣。

使用ES6式導入和BabelDCE transformer可以達到同樣的效果嗎?例如:

import { forEach } from 'lodash'; 

我懷疑,因爲它是從lodash庫的根進口,而不是從各個功能的文件中像前者的例子。

+2

我不知道你的實際問題的答案,我不知道太多,但我認爲這是https://github.com/rollup/rollup的目標。 – JMM

回答

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鏈接!

+0

太棒了。我不知道那是存在的。謝謝! – DynamiteReed

+2

請注意,它不適用於鏈接。所以如果你嘗試使用_(array).map(func).tap(log)'''它將不起作用。 – reflog

+0

@reflog謝謝。添加了一個筆記。 –