Skip to content

Commit 1e3d0f8

Browse files
committed
feat: Support .babel.(jsx|tsx) extensions
1 parent 81ed502 commit 1e3d0f8

File tree

9 files changed

+111
-0
lines changed

9 files changed

+111
-0
lines changed

Diff for: index.js

+22
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ var endsInJsx = /\.jsx$/;
44
var endsInTs = /\.ts$/;
55
var endsInTsx = /\.tsx$/;
66
var endsInBabelJs = /\.babel\.js$/;
7+
var endsInBabelJsx = /\.babel\.jsx$/;
78
var endsInBabelTs = /\.babel\.ts$/;
9+
var endsInBabelTsx = /\.babel\.tsx$/;
810
var endsInEsbuildJs = /\.esbuild\.js$/;
911
var endsInEsbuildJsx = /\.esbuild\.jsx$/;
1012
var endsInEsbuildTs = /\.esbuild\.ts$/;
@@ -57,6 +59,16 @@ var extensions = {
5759
},
5860
},
5961
],
62+
'.babel.jsx': {
63+
module: '@babel/register',
64+
register: function(hook) {
65+
hook({
66+
extensions: '.jsx',
67+
rootMode: 'upward-optional',
68+
overrides: [{ only: [endsInBabelJsx] }],
69+
});
70+
},
71+
},
6072
'.babel.ts': [
6173
{
6274
module: '@babel/register',
@@ -69,6 +81,16 @@ var extensions = {
6981
},
7082
},
7183
],
84+
'.babel.tsx': {
85+
module: '@babel/register',
86+
register: function(hook) {
87+
hook({
88+
extensions: '.tsx',
89+
rootMode: 'upward-optional',
90+
overrides: [{ only: [endsInBabelTsx] }],
91+
});
92+
},
93+
},
7294
'.buble.js': 'buble/register',
7395
'.cirru': 'cirru-script/lib/register',
7496
'.cjsx': 'node-cjsx/register',

Diff for: test/fixtures/babel.jsx/0/.babelrc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["@babel/preset-react"],
3+
}

Diff for: test/fixtures/babel.jsx/0/package.json

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"dependencies": {
3+
"@babel/core": "^7.2.2",
4+
"@babel/preset-react": "^7.0.0",
5+
"@babel/register": "^7.0.0"
6+
}
7+
}

Diff for: test/fixtures/babel.jsx/0/test.babel.jsx

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
const React = {
2+
createElement: function (Component) {
3+
return Component();
4+
}
5+
};
6+
7+
// Test harmony arrow functions
8+
const Component = () => {
9+
var trueKey = true;
10+
var falseKey = false;
11+
var subKey = { subProp: 1 };
12+
// Test harmony object short notation
13+
return { data: { trueKey, falseKey, subKey } };
14+
};
15+
16+
// Test JSX syntax
17+
module.exports = <Component />;

Diff for: test/fixtures/babel.tsx/0/.babelrc

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"presets": [
3+
"@babel/preset-env",
4+
"@babel/preset-react",
5+
[
6+
"@babel/preset-typescript",
7+
{
8+
"isTSX": true,
9+
"allExtensions": true
10+
}
11+
]
12+
]
13+
}

Diff for: test/fixtures/babel.tsx/0/data.babel.tsx

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
var test: {
2+
data: {
3+
trueKey: boolean,
4+
falseKey: boolean,
5+
subKey: {
6+
subProp: number
7+
}
8+
}
9+
} = {
10+
data: {
11+
trueKey: true,
12+
falseKey: false,
13+
subKey: {
14+
subProp: 1
15+
}
16+
}
17+
}
18+
19+
export default test

Diff for: test/fixtures/babel.tsx/0/package.json

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"dependencies": {
3+
"@babel/core": "^7.2.2",
4+
"@babel/preset-env": "^7.2.3",
5+
"@babel/preset-react": "^7.0.0",
6+
"@babel/preset-typescript": "^7.1.0",
7+
"@babel/register": "^7.0.0"
8+
}
9+
}

Diff for: test/fixtures/babel.tsx/0/test.babel.tsx

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import data from "./data.babel"
2+
3+
const React = {
4+
createElement(Component: () => any) {
5+
return Component()
6+
}
7+
}
8+
9+
// Test harmony arrow functions.
10+
const Component = () => {
11+
var trueKey: boolean = true
12+
var falseKey: boolean = false
13+
var subKey = { subProp: 1 }
14+
15+
// Test harmony object short notation.
16+
return { data: { trueKey, falseKey, subKey } }
17+
}
18+
19+
// Test TSX syntax.
20+
export default <Component {...data} />

Diff for: test/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ describe('interpret.extensions', function() {
156156
case '.ts':
157157
case '.tsx':
158158
case '.esm.js':
159+
case '.babel.tsx':
159160
case '.esbuild.js':
160161
case '.esbuild.jsx':
161162
case '.esbuild.ts':

0 commit comments

Comments
 (0)