aboutsummaryrefslogtreecommitdiff
path: root/node_modules/@babel/helpers/README.md
blob: ce5288bf9b142b7db62aa42fe8fd73ee5aa0906b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# @babel/helpers

> Collection of helper functions used by Babel transforms.

## Install

```sh
npm install --save-dev @babel/helpers
```

## Usage

Direct:

```js
import * as helpers from '@babel/helpers';
import * as t from '@babel/types';

const typeofHelper = helpers.get('typeof');

t.isExpressionStatement(typeofHelper);
// true
```

Inside a plugin:

```js
export default {
  visitor: {
    UnaryExpression(path) {
      // The .addHelper function adds, if needed, the helper to the file
      // and returns an expression which references the helper
      const typeofHelper = this.addHelper("typeof");
      t.isExpression(typeofHelper); // true
  }
};
```

## Defining Helpers

> **NOTE**: This package is only meant to be used by the packages inluded in this repository. There is currently no way for third-party plugins to define an helper.

Helpers are defined in the `src/helpers.js` file, and they must be valid modules which follow these guidelines:
 - They must have a default export, which is their entry-point.
 - They can import other helpers, exclusively by using default imports.
 - They can't have named exports.

```js
helpers.customHelper = defineHelper(`
  import dep from "dependency";
  const foo = 2;
  export default function getFooTimesDepPlusX(x) {
    return foo * dep() + x;
  }
`);
```