💻
How are you using Babel?
Programmatic API (babel.transform, babel.parse)
Input code
import { parse } from "@babel/parser";
import traverse from "@babel/traverse";
const ast = parse(
`\
import * as mod from "mod";
mod.name();
<mod.name />;
`,
{
sourceType: "module",
plugins: ["jsx"],
}
);
traverse.default(ast, {
MemberExpression(path) {
if (path.referencesImport("mod", "name")) {
// referencesImport works with MemberExpression
console.log("MemberExpression references `name` in `mod`");
}
},
JSXMemberExpression(path) {
if (path.referencesImport("mod", "name")) {
// but not with JSXMemberExpression
// not executed
console.log("JSXMemberExpression references `name` in `mod`");
}
},
});
https://codesandbox.io/s/trusting-platform-g4znd2
Configuration file name
No response
Configuration
No response
Current and expected behavior
For MemberExpression, referencesImport infers if a function is imported from given source.
For JSXMemberExpression it always returns false.
As the structure is similar, I'd expect referencesImport to be useful with both of these types.
Environment
System:
OS: Linux 5.4 Debian GNU/Linux 10 (buster) 10 (buster)
Binaries:
Node: 14.18.1 - ~/.nvm/versions/node/v14.18.1/bin/node
Yarn: 1.22.17 - ~/.nvm/versions/node/v14.18.1/bin/yarn
npm: 6.14.15 - ~/.nvm/versions/node/v14.18.1/bin/npm
npmPackages:
@babel/parser: 7.17.8 => 7.17.8
@babel/traverse: 7.17.3 => 7.17.3
Possible solution
No response
Additional context
No response
💻
How are you using Babel?
Programmatic API (
babel.transform,babel.parse)Input code
https://codesandbox.io/s/trusting-platform-g4znd2
Configuration file name
No response
Configuration
No response
Current and expected behavior
For
MemberExpression,referencesImportinfers if a function is imported from given source.For
JSXMemberExpressionit always returnsfalse.As the structure is similar, I'd expect
referencesImportto be useful with both of these types.Environment
Possible solution
No response
Additional context
No response