Create smaller Lodash builds by replacing feature sets of modules with noop, identity, or simpler alternatives.
This plugin complements babel-plugin-lodash by shrinking its cherry-picked builds even further!
DISCLAIMER: Using this plugin without enabling the proper feature sets may cause lodash functions to behave in unexpected ways. Methods may appear to work, however they might return incorrect results.
$ npm i --save lodash
$ npm i --save-dev lodash-webpack-plugin babel-core babel-loader babel-plugin-lodash babel-preset-env webpack
var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
var webpack = require('webpack');
module.exports = {
'module': {
'rules': [{
'use': 'babel-loader',
'test': /\.js$/,
'exclude': /node_modules/,
'options': {
'plugins': ['lodash'],
'presets': [['env', { 'modules': false, 'targets': { 'node': 4 } }]]
}
}]
},
'plugins': [
new LodashModuleReplacementPlugin,
new webpack.optimize.UglifyJsPlugin
]
};
Opt-in to features with an options object:
new LodashModuleReplacementPlugin({
'collections': true,
'paths': true
});
The following features are removed by default (biggest savings first):
Feature | Description |
---|---|
shorthands |
Iteratee shorthands for _.property , _.matches , & _.matchesProperty . |
cloning |
Support “clone” methods & cloning source objects. |
currying |
Support “curry” methods. |
caching |
Caches for methods like _.cloneDeep , _.isEqual , & _.uniq . |
collections |
Support objects in “Collection” methods. |
exotics |
Support objects like buffers, maps, sets, symbols, typed arrays, etc. |
guards |
Guards for host objects, sparse arrays, & other edge cases. |
metadata |
Metadata to reduce wrapping of bound, curried, & partially applied functions. (requires currying ) |
deburring |
Support deburring letters. |
unicode |
Support Unicode symbols. |
chaining |
Components to support chain sequences. |
memoizing |
Support _.memoize & memoization. |
coercions |
Support for coercing values to integers, numbers, & strings. |
flattening |
Support “flatten” methods & flattening rest arguments. |
paths |
Deep property path support for methods like _.get , _.has , & _.set . |
placeholders |
Argument placeholder support for “bind”, “curry”, & “partial” methods. (requires currying ) |