Modular Lodash builds without the hassle.
npm install @sigmacomputing/babel-plugin-lodashA simple transform to cherry-pick Lodash modules so you don’t have to.
Combine with lodash-webpack-plugin
for even smaller cherry-picked builds!
@sigmacomputing/babel-plugin-lodash is forked from
babel-plugin-lodash which has
since been abandoned.
NPM
``shell`
$ npm install --save lodash
$ npm install --save-dev babel-plugin-lodash @babel/cli @babel/preset-env
Yarn
`shell`
$ yarn add lodash
$ yarn add @sigmacomputing/babel-plugin-lodash @babel/cli @babel/preset-env -D
Transforms
`js
import _ from 'lodash';
import { add } from 'lodash/fp';
const addOne = add(1);
_.map([1, 2, 3], addOne);
`
roughly to
`js
import _add from 'lodash/fp/add';
import _map from 'lodash/map';
const addOne = _add(1);
_map([1, 2, 3], addOne);
`
###### .babelrc
`json`
{
"plugins": ["@sigmacomputing/babel-plugin-lodash"],
"presets": [["@babel/env", { "targets": { "node": 6 } }]]
}
Set plugin options using an array of [pluginName, optionsObject].
`json`
{
"plugins": [
[
"@sigmacomputing/babel-plugin-lodash",
{ "id": "lodash-compat", "cwd": "some/path" }
]
],
"presets": [["@babel/env", { "targets": { "node": 6 } }]]
}
The options.id can be an array of ids.
`json`
{
"plugins": [
["@sigmacomputing/babel-plugin-lodash", { "id": ["async", "lodash-bound"] }]
],
"presets": [["@babel/env", { "targets": { "node": 6 } }]]
}
###### Babel CLI
`sh`
$ babel --plugins @sigmacomputing/babel-plugin-lodash --presets @babel/es2015 script.js
###### Babel API
`js`
require('babel-core').transform('code', {
plugins: ['@sigmacomputing/babel-plugin-lodash'],
presets: [['@babel/env', { targets: { node: 6 } }]],
});
###### webpack.config.js
`js`
'module': {
'loaders': [{
'loader': 'babel-loader',
'test': /\.js$/,
'exclude': /node_modules/,
'query': {
'plugins': ['@sigmacomputing/babel-plugin-lodash'],
'presets': [['@babel/env', { 'targets': { 'node': 6 } }]]
}
}]
}
> Can this plugin produce ES2015 imports rather than CommonJS imports?
This plugin produces ES2015 imports by default. The
@babel/plugin-transform-modules-commonjs
plugin, which is included in the @babel/preset-es2015
preset, transforms ES2015 import` statements to CommonJS. Omit it from your
preset to preserve ES2015 style imports.
- You must use ES2015 imports to load Lodash
- Babel < 6 & Node.js < 4 aren’t supported
- Chain sequences aren’t supported. See this blog post for alternatives.
- Modularized method packages aren’t supported