Document babel helpers (#6364) [skip ci]

This commit is contained in:
Nicolò Ribaudo
2017-10-02 22:29:49 +02:00
committed by Henry Zhu
parent 73fba55c9f
commit db6626718f

View File

@@ -10,6 +10,8 @@ npm install --save-dev babel-helpers
## Usage
Direct:
```js
import * as helpers from 'babel-helpers';
import * as t from 'babel-types';
@@ -19,3 +21,36 @@ 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;
}
`);
```