Javascript Babel变换,获取父范围常量的值

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

假设我有这样的Javascript代码

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');