GitHub - lodash/babel-plugin-lodash: Modular Lodash builds without the hassle. (original) (raw)

babel-plugin-lodash

A simple transform to cherry-pick Lodash modules so you don’t have to.

Combine with lodash-webpack-pluginfor even smaller cherry-picked builds!

Install

$ npm i --save lodash $ npm i --save-dev babel-plugin-lodash @babel/cli @babel/preset-env

Example

Transforms

import _ from 'lodash' import { add } from 'lodash/fp'

const addOne = add(1) _.map([1, 2, 3], addOne)

roughly to

import _add from 'lodash/fp/add' import _map from 'lodash/map'

const addOne = _add(1) _map([1, 2, 3], addOne)

Usage

.babelrc

{ "plugins": ["lodash"], "presets": [["@babel/env", { "targets": { "node": 6 } }]] }

Set plugin options using an array of [pluginName, optionsObject].

{ "plugins": [["lodash", { "id": "lodash-compat", "cwd": "some/path" }]], "presets": [["@babel/env", { "targets": { "node": 6 } }]] }

The options.id can be an array of ids.

{ "plugins": [["lodash", { "id": ["async", "lodash-bound"] }]], "presets": [["@babel/env", { "targets": { "node": 6 } }]] }

Babel CLI

$ babel --plugins lodash --presets @babel/es2015 script.js

Babel API

require('babel-core').transform('code', { 'plugins': ['lodash'], 'presets': [['@babel/env', { 'targets': { 'node': 6 } }]] })

webpack.config.js

'module': { 'loaders': [{ 'loader': 'babel-loader', 'test': /.js$/, 'exclude': /node_modules/, 'query': { 'plugins': ['lodash'], 'presets': [['@babel/env', { 'targets': { 'node': 6 } }]] } }] }

FAQ

Can this plugin produce ES2015 imports rather than CommonJS imports?

This plugin produces ES2015 imports by default. The@babel/plugin-transform-modules-commonjsplugin, which is included in the @babel/preset-es2015preset, transforms ES2015 import statements to CommonJS. Omit it from your preset to preserve ES2015 style imports.

Limitations