侧边栏壁纸
博主头像
铁永杰的博客 博主等级

行动起来,活在当下

  • 累计撰写 30 篇文章
  • 累计创建 2 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

AST-path.remove的使用

Administrator
2024-04-16 / 0 评论 / 0 点赞 / 94 阅读 / 0 字

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;
0

评论区