小熊-Webpack原理

93 阅读1分钟

Webpack原理

  1. 获取主模块内容
    主要是通过require('fs')去进行读取入口的文件
  2. 分析模块
    将获取到的模块内容解析成AST语法树,咋转?通过@babel/parser
// 获取主入口文件
const fs = require('fs')
const parser = require('@babel/parser')
const getModuleInfo = (file)=>{
    const body = fs.readFileSync(file,'utf-8')
    // 新增代码
    const ast = parser.parse(body,{
        sourceType:'module' //表示我们要解析的是ES模块
    });
    console.log(ast);
}
getModuleInfo("./src/index.js")
  1. 收集依赖
    遍历AST,将用到的依赖收集起来。将用import语句引入的文件路径收集起来。采用babel/traverse
  2. 将ES6转成ES5,使用babel/preset-env
  3. 递归获取所有依赖并存到depsGraph中
  4. 处理import和export关键字