diff --git a/packages/babel-plugin-transform-react-jsx-self/.npmignore b/packages/babel-plugin-transform-react-jsx-self/.npmignore new file mode 100644 index 0000000000..31852902b1 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/.npmignore @@ -0,0 +1,4 @@ +node_modules +*.log +src +test diff --git a/packages/babel-plugin-transform-react-jsx-self/README.md b/packages/babel-plugin-transform-react-jsx-self/README.md new file mode 100644 index 0000000000..2a60a3b501 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/README.md @@ -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 + +``` + +``` +###Out + +``` + +``` + +## 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"] +}); +``` diff --git a/packages/babel-plugin-transform-react-jsx-self/package.json b/packages/babel-plugin-transform-react-jsx-self/package.json new file mode 100644 index 0000000000..cd6985a6c4 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/package.json @@ -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" + } +} diff --git a/packages/babel-plugin-transform-react-jsx-self/src/index.js b/packages/babel-plugin-transform-react-jsx-self/src/index.js new file mode 100644 index 0000000000..85113bca0c --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/src/index.js @@ -0,0 +1,30 @@ + + /** + * This adds {fileName, lineNumber} annotations to React component definitions + * and to jsx tag literals. + * + * + * == JSX Literals == + * + * + * + * becomes: + * + * + */ + +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 + }; +} diff --git a/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/actual.js b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/actual.js new file mode 100644 index 0000000000..da9210eabb --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/actual.js @@ -0,0 +1 @@ +var x = diff --git a/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/expected.js b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/expected.js new file mode 100644 index 0000000000..815cbb0d90 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/basic-sample/expected.js @@ -0,0 +1 @@ +var x = ; \ No newline at end of file diff --git a/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json new file mode 100644 index 0000000000..5a2d48a4a8 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/test/fixtures/react-source/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["syntax-jsx", "transform-react-jsx-self"] +} diff --git a/packages/babel-plugin-transform-react-jsx-self/test/index.js b/packages/babel-plugin-transform-react-jsx-self/test/index.js new file mode 100644 index 0000000000..1f6634aabd --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx-self/test/index.js @@ -0,0 +1 @@ +require("babel-helper-plugin-test-runner")(__dirname); diff --git a/packages/babel-preset-react/index.js b/packages/babel-preset-react/index.js index 89f691a454..c0f5e6d7b0 100644 --- a/packages/babel-preset-react/index.js +++ b/packages/babel-preset-react/index.js @@ -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") ] } - }*/ + } };