Skip to content

Commit

Permalink
Merge pull request #2 from sigmacomputing/pearce/readme
Browse files Browse the repository at this point in the history
Update readme to indicate how to use the newly renamed package
  • Loading branch information
Pearce-Ropion authored Jun 22, 2023
2 parents f10433f + 565d54e commit 5b488c8
Showing 1 changed file with 51 additions and 23 deletions.
74 changes: 51 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,85 +1,113 @@
# babel-plugin-lodash
# @sigmacomputing/babel-plugin-lodash

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

Combine with [lodash-webpack-plugin](https://www.npmjs.com/package/lodash-webpack-plugin)
for even smaller cherry-picked builds!

@sigmacomputing/babel-plugin-lodash is forked from
[babel-plugin-lodash](https://github.com/lodash/babel-plugin-lodash) which has
since been abandoned.

## Install

NPM

```shell
$ npm i --save lodash
$ npm i --save-dev babel-plugin-lodash @babel/cli @babel/preset-env
$ 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
```

## Example

Transforms

```js
import _ from 'lodash'
import { add } from 'lodash/fp'
import _ from 'lodash';
import { add } from 'lodash/fp';

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

roughly to

```js
import _add from 'lodash/fp/add'
import _map from 'lodash/map'
import _add from 'lodash/fp/add';
import _map from 'lodash/map';

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

## Usage

###### .babelrc

```json
{
"plugins": ["lodash"],
"plugins": ["@sigmacomputing/babel-plugin-lodash"],
"presets": [["@babel/env", { "targets": { "node": 6 } }]]
}
```

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

```json
{
"plugins": [["lodash", { "id": "lodash-compat", "cwd": "some/path" }]],
"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": [["lodash", { "id": ["async", "lodash-bound"] }]],
"plugins": [
["@sigmacomputing/babel-plugin-lodash", { "id": ["async", "lodash-bound"] }]
],
"presets": [["@babel/env", { "targets": { "node": 6 } }]]
}
```

###### Babel CLI

```sh
$ babel --plugins lodash --presets @babel/es2015 script.js
$ babel --plugins @sigmacomputing/babel-plugin-lodash --presets @babel/es2015 script.js
```

###### Babel API

```js
require('babel-core').transform('code', {
'plugins': ['lodash'],
'presets': [['@babel/env', { 'targets': { 'node': 6 } }]]
})
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': ['lodash'],
'plugins': ['@sigmacomputing/babel-plugin-lodash'],
'presets': [['@babel/env', { 'targets': { 'node': 6 } }]]
}
}]
Expand All @@ -98,7 +126,7 @@ preset to preserve ES2015 style imports.

## Limitations

* 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](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba) for alternatives.
* Modularized [method packages](https://www.npmjs.com/browse/keyword/lodash-modularized) aren’t supported
- 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](https://medium.com/making-internets/why-using-chain-is-a-mistake-9bc1f80d51ba) for alternatives.
- Modularized [method packages](https://www.npmjs.com/browse/keyword/lodash-modularized) aren’t supported

0 comments on commit 5b488c8

Please sign in to comment.