This commit is contained in:
chrosey
2017-09-13 07:52:34 +02:00
parent a1f16c37f4
commit 2340b0226b
24621 changed files with 2912161 additions and 149 deletions
@@ -0,0 +1,4 @@
node_modules
*.log
src
test
+98
View File
@@ -0,0 +1,98 @@
# babel-plugin-transform-es2015-arrow-functions
> Compile ES2015 arrow functions to ES5
## Example
**In**
```javascript
var a = () => {};
var a = (b) => b;
const double = [1,2,3].map((num) => num * 2);
console.log(double); // [2,4,6]
var bob = {
_name: "Bob",
_friends: ["Sally", "Tom"],
printFriends() {
this._friends.forEach(f =>
console.log(this._name + " knows " + f));
}
};
console.log(bob.printFriends());
```
**Out**
```javascript
var a = function a() {};
var a = function a(b) {
return b;
};
var double = [1, 2, 3].map(function (num) {
return num * 2;
});
console.log(double); // [2,4,6]
var bob = {
_name: "Bob",
_friends: ["Sally", "Tom"],
printFriends: function printFriends() {
var _this = this;
this._friends.forEach(function (f) {
return console.log(_this._name + " knows " + f);
});
}
};
console.log(bob.printFriends());
```
[Try in REPL](http://babeljs.io/repl/#?evaluate=true&lineWrap=true&presets=es2015%2Ces2015-loose&experimental=false&loose=false&spec=false&code=var%20a%20%3D%20()%20%3D%3E%20%7B%7D%3B%0Avar%20a%20%3D%20(b)%20%3D%3E%20b%3B%0A%0Aconst%20double%20%3D%20%5B1%2C2%2C3%5D.map((num)%20%3D%3E%20num%20*%202)%3B%0Aconsole.log(double)%3B%20%2F%2F%20%5B2%2C4%2C6%5D%0A%0Avar%20bob%20%3D%20%7B%0A%20%20_name%3A%20%22Bob%22%2C%0A%20%20_friends%3A%20%5B%22Sally%22%2C%20%22Tom%22%5D%2C%0A%20%20printFriends()%20%7B%0A%20%20%20%20this._friends.forEach(f%20%3D%3E%0A%20%20%20%20%20%20console.log(this._name%20%2B%20%22%20knows%20%22%20%2B%20f))%3B%0A%20%20%7D%0A%7D%3B%0Aconsole.log(bob.printFriends())%3B&playground=true)
## Installation
```sh
npm install --save-dev babel-plugin-transform-es2015-arrow-functions
```
## Usage
### Via `.babelrc` (Recommended)
**.babelrc**
```js
// without options
{
"plugins": ["transform-es2015-arrow-functions"]
}
// with options
{
"plugins": [
["transform-es2015-arrow-functions", { "spec": true }]
]
}
```
### Via CLI
```sh
babel --plugins transform-es2015-arrow-functions script.js
```
### Via Node API
```javascript
require("babel-core").transform("code", {
plugins: ["transform-es2015-arrow-functions"]
});
```
## Options
* `spec` - This option wraps the generated function in `.bind(this)` and keeps uses of `this` inside the function as-is, instead of using a renamed `this`. It also adds a runtime check to ensure the functions are not instantiated.
@@ -0,0 +1,34 @@
"use strict";
exports.__esModule = true;
exports.default = function (_ref) {
var t = _ref.types;
return {
visitor: {
ArrowFunctionExpression: function ArrowFunctionExpression(path, state) {
if (state.opts.spec) {
var node = path.node;
if (node.shadow) return;
node.shadow = { this: false };
node.type = "FunctionExpression";
var boundThis = t.thisExpression();
boundThis._forceShadow = path;
path.ensureBlock();
path.get("body").unshiftContainer("body", t.expressionStatement(t.callExpression(state.addHelper("newArrowCheck"), [t.thisExpression(), boundThis])));
path.replaceWith(t.callExpression(t.memberExpression(node, t.identifier("bind")), [t.thisExpression()]));
} else {
path.arrowFunctionToShadowed();
}
}
}
};
};
module.exports = exports["default"];
+100
View File
@@ -0,0 +1,100 @@
{
"_args": [
[
{
"raw": "babel-plugin-transform-es2015-arrow-functions@^6.22.0",
"scope": null,
"escapedName": "babel-plugin-transform-es2015-arrow-functions",
"name": "babel-plugin-transform-es2015-arrow-functions",
"rawSpec": "^6.22.0",
"spec": ">=6.22.0 <7.0.0",
"type": "range"
},
"c:\\xampp\\htdocs\\laravel\\node_modules\\babel-preset-env"
]
],
"_from": "babel-plugin-transform-es2015-arrow-functions@>=6.22.0 <7.0.0",
"_id": "babel-plugin-transform-es2015-arrow-functions@6.22.0",
"_inCache": true,
"_location": "/babel-plugin-transform-es2015-arrow-functions",
"_nodeVersion": "6.9.0",
"_npmOperationalInternal": {
"host": "packages-12-west.internal.npmjs.com",
"tmp": "tmp/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz_1484872427408_0.779699427774176"
},
"_npmUser": {
"name": "hzoo",
"email": "hi@henryzoo.com"
},
"_npmVersion": "3.10.10",
"_phantomChildren": {},
"_requested": {
"raw": "babel-plugin-transform-es2015-arrow-functions@^6.22.0",
"scope": null,
"escapedName": "babel-plugin-transform-es2015-arrow-functions",
"name": "babel-plugin-transform-es2015-arrow-functions",
"rawSpec": "^6.22.0",
"spec": ">=6.22.0 <7.0.0",
"type": "range"
},
"_requiredBy": [
"/babel-preset-env"
],
"_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz",
"_shasum": "452692cb711d5f79dc7f85e440ce41b9f244d221",
"_shrinkwrap": null,
"_spec": "babel-plugin-transform-es2015-arrow-functions@^6.22.0",
"_where": "c:\\xampp\\htdocs\\laravel\\node_modules\\babel-preset-env",
"dependencies": {
"babel-runtime": "^6.22.0"
},
"description": "Compile ES2015 arrow functions to ES5",
"devDependencies": {
"babel-helper-plugin-test-runner": "^6.22.0"
},
"directories": {},
"dist": {
"shasum": "452692cb711d5f79dc7f85e440ce41b9f244d221",
"tarball": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz"
},
"keywords": [
"babel-plugin"
],
"license": "MIT",
"main": "lib/index.js",
"maintainers": [
{
"name": "amasad",
"email": "amjad.masad@gmail.com"
},
{
"name": "hzoo",
"email": "hi@henryzoo.com"
},
{
"name": "jmm",
"email": "npm-public@jessemccarthy.net"
},
{
"name": "loganfsmyth",
"email": "loganfsmyth@gmail.com"
},
{
"name": "sebmck",
"email": "sebmck@gmail.com"
},
{
"name": "thejameskyle",
"email": "me@thejameskyle.com"
}
],
"name": "babel-plugin-transform-es2015-arrow-functions",
"optionalDependencies": {},
"readme": "ERROR: No README data found!",
"repository": {
"type": "git",
"url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-arrow-functions"
},
"scripts": {},
"version": "6.22.0"
}