Skip to content

Commit 7d68efc

Browse files
committed
When JSX is used, automatically import 'react' and createElement appropriately
1 parent d3530f4 commit 7d68efc

File tree

6 files changed

+23
-3
lines changed

6 files changed

+23
-3
lines changed

config/babel.dev.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ module.exports = {
4141
// Resolve the Babel runtime relative to the config.
4242
// You can safely remove this after ejecting:
4343
moduleName: path.dirname(require.resolve('babel-runtime/package'))
44+
}],
45+
// Turns JSX into createElement() calls
46+
[require.resolve('babel-plugin-transform-react-jsx'), {
47+
pragma: 'createElement',
48+
}],
49+
// Import react automatically, as need, when JSX is used
50+
[require.resolve('babel-plugin-jsx-pragmatic'), {
51+
module: 'react',
52+
import: 'createElement',
53+
export: 'createElement'
4454
}]
4555
]
4656
};

config/babel.prod.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ module.exports = {
3939
// You can safely remove this after ejecting:
4040
moduleName: path.dirname(require.resolve('babel-runtime/package'))
4141
}],
42+
// Turns JSX into createElement() calls
43+
[require.resolve('babel-plugin-transform-react-jsx'), {
44+
pragma: 'createElement',
45+
}],
46+
// Import react automatically, as need, when JSX is used
47+
[require.resolve('babel-plugin-jsx-pragmatic'), {
48+
module: 'react',
49+
import: 'createElement',
50+
export: 'createElement'
51+
}]
4252
// Optimization: hoist JSX that never changes out of render()
4353
// Disabled because of issues:
4454
// * https://github.com/facebookincubator/create-react-app/issues/525

config/eslint.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,6 @@ module.exports = {
190190
'react/no-deprecated': 'warn',
191191
'react/no-direct-mutation-state': 'warn',
192192
'react/no-is-mounted': 'warn',
193-
'react/react-in-jsx-scope': 'warn',
194193
'react/require-render-return': 'warn',
195194

196195
// https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@
3333
"babel-eslint": "6.1.2",
3434
"babel-jest": "15.0.0",
3535
"babel-loader": "6.2.5",
36+
"babel-plugin-jsx-pragmatic": "1.0.2",
3637
"babel-plugin-transform-class-properties": "6.11.5",
3738
"babel-plugin-transform-object-rest-spread": "6.8.0",
3839
"babel-plugin-transform-react-constant-elements": "6.9.1",
40+
"babel-plugin-transform-react-jsx": "6.8.0",
3941
"babel-plugin-transform-regenerator": "6.14.0",
4042
"babel-plugin-transform-runtime": "6.15.0",
4143
"babel-preset-latest": "6.14.0",

template/src/App.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { Component } from 'react';
1+
import { Component } from 'react';
22
import logo from './logo.svg';
33
import './App.css';
44

template/src/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import React from 'react';
21
import ReactDOM from 'react-dom';
32
import App from './App';
43
import './index.css';

0 commit comments

Comments
 (0)