diff --git a/packages/babel-template/src/parse.js b/packages/babel-template/src/parse.js index 0df147530d..8599a1637f 100644 --- a/packages/babel-template/src/parse.js +++ b/packages/babel-template/src/parse.js @@ -64,7 +64,7 @@ function placeholderVisitorHandler( state: MetadataState, ) { let name; - if (t.isIdentifier(node)) { + if (t.isIdentifier(node) || t.isJSXIdentifier(node)) { name = ((node: any): BabelNodeIdentifier).name; } else if (t.isStringLiteral(node)) { name = ((node: any): BabelNodeStringLiteral).value; diff --git a/packages/babel-template/test/index.js b/packages/babel-template/test/index.js index 5c49bc310b..27a31336ab 100644 --- a/packages/babel-template/test/index.js +++ b/packages/babel-template/test/index.js @@ -204,5 +204,20 @@ describe("@babel/template", function() { expect(result.test.type).to.equal("BinaryExpression"); expect(result.test.left).to.equal(value); }); + + it("should replace JSX placeholder", () => { + const result = template.expression( + ` + {'content'} + `, + { + plugins: ["jsx"], + }, + )({ + TAG: t.jsxIdentifier("div"), + }); + + expect(generator(result).code).to.equal("
{'content'}
"); + }); }); });