Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Babeljs 如何用babel插件替换函数名_Babeljs - Fatal编程技术网

Babeljs 如何用babel插件替换函数名

Babeljs 如何用babel插件替换函数名,babeljs,Babeljs,有没有可能创建一个babel插件来更改一些函数名 我似乎在文档中找不到这个 例如: myObject.doSomething() ==> babel ==> myObject.___doSomething() 感谢以下是两种不同的方法(使用程序访问者或使用FunctionDeclaration访问者): 请注意,这些名称不安全,因为它们可以覆盖现有名称。您可以使用path.scope.generateUIDIIdentifier(“uid”)命令生成唯一标识符并使用该标识符,但您将

有没有可能创建一个babel插件来更改一些函数名

我似乎在文档中找不到这个

例如:

myObject.doSomething() ==> babel ==> myObject.___doSomething()

感谢

以下是两种不同的方法(使用程序访问者或使用FunctionDeclaration访问者):

请注意,这些名称不安全,因为它们可以覆盖现有名称。您可以使用
path.scope.generateUIDIIdentifier(“uid”)命令生成唯一标识符并使用该标识符,但您将无法定义生成的名称


示例-

您可以在中获取代码的AST。您可以看到它是关于CallExpression和MemberExpression的。因此,在API中搜索babel类型,很清楚如何创建babel类型或判断babel类型,如下所示:

defineType("MemberExpression", {
  builder: ["object", "property", "computed"],
  visitor: ["object", "property"],
  aliases: ["Expression", "LVal"],
  fields: {
    object: {
      validate: assertNodeType("Expression")
    },
    property: {
      validate(node, key, val) {
        let expectedType = node.computed ? "Expression" : "Identifier";
        assertNodeType(expectedType)(node, key, val);
      }
    },
    computed: {
      default: false
    }
  }
});
defineType("MemberExpression", {
  builder: ["object", "property", "computed"],
  visitor: ["object", "property"],
  aliases: ["Expression", "LVal"],
  fields: {
    object: {
      validate: assertNodeType("Expression")
    },
    property: {
      validate(node, key, val) {
        let expectedType = node.computed ? "Expression" : "Identifier";
        assertNodeType(expectedType)(node, key, val);
      }
    },
    computed: {
      default: false
    }
  }
});