下边是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')
const ast = babylon.parse(content,{
sourceType: "module"
})
const dependencies = []
traverse(ast,{
ImportDeclaration:({node})=>{
dependencies.push(node.source.value)
}
})
const id = ID++
return {
id,
filename,
dependencies
}
}
function createGraph(entry){
const mainAsset = createAsset(entry)
}
const graph = createGraph('./source/entry.js')
console.log(graph)