ast babeljs --3 (删除未使用的变量)
https://www.cnblogs.com/gaoyongjian/p/13246736.html
// 将js代码转换成AST const { parse } = require("@babel/parser"); // 用来遍历AST中的节点 const traverse = require("@babel/traverse").default; // AST转换成js const generator = require("@babel/generator").default; // 用来判断节点类型和生成新的节点 const t = require("@babel/types"); const fs = require("fs"); const jscode = fs.readFileSync("./demo.js", { encoding: "utf-8" }); let ast = parse(jscode); const visitor = { VariableDeclarator(path) { const {id} = path.node; const binding = path.scope.getBinding(id.name); //如果变量被修改过,则不能进行删除动作。 if (!binding || binding.constantViolations.length > 0) { return; } //长度为0,说明变量没有被使用过。 if (binding.referencePaths.length === 0) { path.remove(); } }, } traverse(ast, visitor); let code = generator(ast).code; fs.writeFile('./demoNew.js', code, (err) => { });