用AST把
转成这样
打开网站https://blogz.gitee.io/ast/
把代码复制到这个网站解析成AST
分析一下
1.遍历ObjectProperty节点
2.获取它的key,value
3.得到key的值
4.替换value里面的id为key
5.保存替换后的结果
代码如下:
const parser = require("@babel/parser");
const traverse = require("@babel/traverse").default;
const t = require("@babel/types");
const generator = require("@babel/generator").default;
const fs = require('fs');
//读取要转换的js
let jscode = fs.readFileSync("./yuan.js", {
encoding: "utf-8"
});
let newF = []
const visitor = {
"ObjectProperty"(path)
{
const {key,value} = path.node;
let fname = key.name
if(!t.isFunctionExpression(value)) return;
if(value.id == null){
value.id = t.identifier(fname)
}else{
value.id=t.identifier(fname)
}
path.replaceInline(value)
newF.push(path.toString())
},
}
let ast = parser.parse(jscode);
traverse(ast,visitor);
let {code} = generator(ast);
let newString = newF.join("\n")
fs.writeFile('result.js', newString, (err)=>{}); //把结果写入新的js文件
网友评论