zoukankan      html  css  js  c++  java
  • 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) => { });
  • 相关阅读:
    HBASE数据模型&扩展和负载均衡理论
    JVM Safepoint 安全点
    JVM垃圾回收算法 及 垃圾收集器
    JVM运行时数据区域
    Java IO、BIO、NIO、BIO
    Java反射
    Zookeeper
    二叉树深度
    二叉树层次遍历
    KMP算法
  • 原文地址:https://www.cnblogs.com/angdh/p/14405790.html
Copyright © 2011-2022 走看看