Merge pull request #3540 from jimfb/jsx-self
Added jsx-self babel transform plugin
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
node_modules
|
||||
*.log
|
||||
src
|
||||
test
|
||||
49
packages/babel-plugin-transform-react-jsx-self/README.md
Normal file
49
packages/babel-plugin-transform-react-jsx-self/README.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# babel-plugin-transform-react-jsx-self
|
||||
|
||||
Adds `__self` prop to JSX elements, which React will use to generate some runtime warnings. All React users
|
||||
should enable this transform in dev mode.
|
||||
|
||||
## Example
|
||||
|
||||
###In
|
||||
|
||||
```
|
||||
<sometag />
|
||||
```
|
||||
###Out
|
||||
|
||||
```
|
||||
<sometag __self={this} />
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
$ npm install babel-plugin-transform-react-jsx-self
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Via `.babelrc` (Recommended)
|
||||
|
||||
**.babelrc**
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": ["transform-react-jsx-self"]
|
||||
}
|
||||
```
|
||||
|
||||
### Via CLI
|
||||
|
||||
```sh
|
||||
$ babel --plugins transform-react-jsx-self script.js
|
||||
```
|
||||
|
||||
### Via Node API
|
||||
|
||||
```javascript
|
||||
require("babel-core").transform("code", {
|
||||
plugins: ["transform-react-jsx-self"]
|
||||
});
|
||||
```
|
||||
18
packages/babel-plugin-transform-react-jsx-self/package.json
Normal file
18
packages/babel-plugin-transform-react-jsx-self/package.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "babel-plugin-transform-react-jsx-self",
|
||||
"version": "6.9.0",
|
||||
"description": "Add a __self prop to all JSX Elements",
|
||||
"repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx-self",
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
"keywords": [
|
||||
"babel-plugin"
|
||||
],
|
||||
"dependencies": {
|
||||
"babel-runtime": "^6.9.0",
|
||||
"babel-plugin-syntax-jsx": "^6.8.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-helper-plugin-test-runner": "^6.8.0"
|
||||
}
|
||||
}
|
||||
30
packages/babel-plugin-transform-react-jsx-self/src/index.js
Normal file
30
packages/babel-plugin-transform-react-jsx-self/src/index.js
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
/**
|
||||
* This adds {fileName, lineNumber} annotations to React component definitions
|
||||
* and to jsx tag literals.
|
||||
*
|
||||
*
|
||||
* == JSX Literals ==
|
||||
*
|
||||
* <sometag />
|
||||
*
|
||||
* becomes:
|
||||
*
|
||||
* <sometag __self={this} />
|
||||
*/
|
||||
|
||||
const TRACE_ID = "__self";
|
||||
|
||||
export default function ({ types: t }) {
|
||||
let visitor = {
|
||||
JSXOpeningElement(node) {
|
||||
const id = t.jSXIdentifier(TRACE_ID);
|
||||
const trace = t.identifier("this");
|
||||
node.container.openingElement.attributes.push(t.jSXAttribute(id, t.jSXExpressionContainer(trace)));
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
visitor
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
var x = <sometag />
|
||||
@@ -0,0 +1 @@
|
||||
var x = <sometag __self={this} />;
|
||||
3
packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json
vendored
Normal file
3
packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["syntax-jsx", "transform-react-jsx-self"]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
require("babel-helper-plugin-test-runner")(__dirname);
|
||||
@@ -6,11 +6,12 @@ module.exports = {
|
||||
require("babel-plugin-syntax-jsx"),
|
||||
require("babel-plugin-transform-react-display-name"),
|
||||
],
|
||||
/*env: {
|
||||
env: {
|
||||
development: {
|
||||
plugins: [
|
||||
require("babel-plugin-transform-react-jsx-source")
|
||||
// require("babel-plugin-transform-react-jsx-source"),
|
||||
require("babel-plugin-transform-react-jsx-self")
|
||||
]
|
||||
}
|
||||
}*/
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user