AST

AST即抽象语法树,是源代码抽象语法的树形表现形式
无论是代码编译(babel),打包(webpack),代码压缩,css预处理,代码校验(eslint),代码美化(pretiier),Vue中对template的编译,这些的实现都离不开AST。

babel 的原理

babel编译代码的过程有三步:

  1. parse: 把代码code(字符串形式)变成AST
  2. traverse: 遍历 AST 进行修改
  3. generate: 把 AST 生成 code2

总结:code -> AST -> AST2 -> code2
babel 可以把ES6等更高版本的代码编译成 ES5,编译过程用到了@babel/parser,@babel/traverse,@babel/generate,还有@babel/preset-env的内置规则

依赖

如果文件有别的依赖,将会递归的进行分析,
如果文件中存在循环依赖,可能本身有错误无法执行,但是可以做静态的依赖分析