path.remove的使用
**题目:**删除下图代码中b = “111”
var a = 111,b = "111";
编写AST插件
const {parse} = require("@babel/parser");
const generator = require("@babel/generator").default;
const template = require("@babel/template").default;
const types = require("@babel/types");
const traverse = require("@babel/traverse").default;
let ast = parse(`var a = 123,b = "123";`);
traverse(ast,{
VariableDeclarator(path){
console.log(path.node.init)
if (path.node.init.type ==="StringLiteral"){
path.remove();
}
//path.remove()
}
})
let {code} = generator(ast);
console.log(code)
也可写成
const {parse} = require("@babel/parser");
const generator = require("@babel/generator").default;
const template = require("@babel/template").default;
const types = require("@babel/types");
const traverse = require("@babel/traverse").default;
let ast = parse(`var a = 123,b = "123";`);
traverse(ast,{
VariableDeclarator(path){
let init = path.get("init");
if (init.isStringLiteral()){
//console.log(init);
path.remove();
}
}
//path.remove()
// }
})
let {code} = generator(ast);
console.log(code)
输出结果如下
[Running] node "d:\AST\container.js"
var a = 123;