Javascript Babel变换,获取父范围常量的值
假设我有这样的Javascript代码Javascript Babel变换,获取父范围常量的值,javascript,abstract-syntax-tree,babeljs,Javascript,Abstract Syntax Tree,Babeljs,假设我有这样的Javascript代码 import someFunc from 'somewhere'; const prefix = 'Planet'; someFunc(prefix + 'Earth'); 如果我在我的项目中使用babeljs,我可以编写简单的转换插件 export default function({types: t}) { return { visitor: { CallExpression: { enter(path, {o
import someFunc from 'somewhere';
const prefix = 'Planet';
someFunc(prefix + 'Earth');
如果我在我的项目中使用babeljs,我可以编写简单的转换插件
export default function({types: t}) {
return {
visitor: {
CallExpression: {
enter(path, {opts, file}) {
if (path.node.callee.name !== 'someFunc') {
return;
}
<...>
}
}
}
}
}
什么是
someFunc
?它等于你的导出函数吗?不,它是一些导入函数。我认为你把翻译时间和运行时混淆了。当Babel
执行转换时,变量prefix
不存在。代码实际上没有运行。您可以访问在代码中找到的语法标记,但不能访问其值。@slezica是的,我想在“转换时间”中替换:)为了安全起见,我使用“const”,我可以像这样访问前缀值,但它看起来太“glibly”path.scope.bindings.prefix.path.get('value').parent.init.value
import someFunc from 'somewhere';
someFunc('PlanetEarth');