利用babel获取webpack入口文件的依赖

501 阅读1分钟

下边是babel的另一个实践应用,在webpack源码中用来获取入口文件的依赖

// 找到一个入口文件
// 解析这个入口文件,找到他的依赖
// 解析入口文件的依赖的依赖,递归的去创建一个文件的依赖图,描述所有文件的依赖关系
// 把所有文件打包成一个文件
const fs = require('fs')
const babylon = require('babylon')
const traverse = require('babel-traverse').default
let ID =0
function createAsset(filename){
    const content = fs.readFileSync(filename,'utf-8')
    //console.log(content)
    const ast = babylon.parse(content,{
        sourceType: "module"
    })
    const dependencies = []
    traverse(ast,{
        ImportDeclaration:({node})=>{
            dependencies.push(node.source.value)
            //console.log(dependencies)
        }
    })
    const id = ID++
    return {
        id,
        filename,
        dependencies
    }
    //0 ./source/entry.js [ './message' ]
}
function createGraph(entry){
    const mainAsset = createAsset(entry)
}
const graph = createGraph('./source/entry.js')
console.log(graph)