2015-10-07 33 views
5

Ho utilizzato lodash nelle mie applicazioni e librerie e ho imballato le mie applicazioni e librerie con webpack (e UglifyJS).Rimozione codice guasto Lodash in ES6

Il problema con questo è che quando si minimizza, se si importa Lodash nella sua interezza, UglifyJS non sa di rimuovere le funzioni da lodash che non sono utilizzate. le persone intelligenti hanno escogitato l'importazione solo le funzioni che si vuole utilizzare dal lodash, in questo modo:

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

Questa grande opera e si traduce in una versione molto più piccola del mio codice compilato. Tuttavia, può essere molto noioso in file che utilizzano molte parti di lodash.

È possibile ottenere lo stesso effetto utilizzando le importazioni in stile ES6 e DCE transformer? Per esempio:

import { forEach } from 'lodash'; 

Sono sospetto dal momento che è l'importazione dalla radice della biblioteca lodash e non dal file della funzione dell'individuo come l'ex esempio.

+2

Non conosco la risposta alla tua domanda attuale e non ne so molto, ma penso che sia l'obiettivo di https://github.com/rollup/rollup. – JMM

risposta

10

Dato che probabilmente usi già Babel, penso che lo babel-plugin-lodash possa fare il trucco. E 'in grado di eseguire la trasformazione da

import lodash from 'lodash'; 

lodash.map([1, 2, 3], function(x) { 
    // ... 
}); 

a

import _map from 'lodash/collection/map'; 

_map([1, 2, 3], function(x) { 
    // ... 
}); 

IMPORTANTE! Come accennato da @reflog ai commenti, questo approccio non funziona con il concatenamento di lodash!

+0

È fantastico. Non avevo idea che esistesse. Grazie! – DynamiteReed

+2

Tieni presente che non funziona con il concatenamento. Quindi se provi '' '_ (array) .map (func) .tap (log)' '' non funzionerà. – reflog

+0

@reflog Grazie. Aggiunta una nota –